A5/1應該是一個比較低級且基於流秘鑰的一種加密算法,因為是可以基於硬件實現的,所以可以非常快。
在這里寫主要還是為了便於自己以后理解,如有不對請各位指正。
轉載請注明:https://www.cnblogs.com/gambler/p/9074356.html
首先要明白A5/1算法產生秘鑰的流程(這里就不講什么初始化,道理都一樣,主要是講秘鑰是怎么生成的)
1、假設有以下三個初始移位寄存器(先只要知道有三個移位寄存器(就是普通寄存器),分別有19位,22位,23位)
2、然后是如何開始生成秘鑰的,假設有三個寄存器目前的狀態是這樣:
3、接下來開始進行規定的流程(這是規定,別問我為什么這樣做)
(1)首先找到X8=1,Y10=0,Z10=1
(2)取數量最多的作為結果M=Maj(X8,Y10 , Z10 )= Maj(1,0, 1)=1;(如果是M=Maj(0,0,1)=0)
(3)因為M=1,且X8=1,M=X8,所以X寄存器需要左移一位,那么因為左移,第一位就空出來了,則 X0= (移位前的)=1
所以最后X寄存器變為
同理,再看Y寄存器,因為M=1,Y10=0,所以Y寄存器不需要進行移位,保持不變(如果是M=Y10 Z0=)
同理,Z寄存器,因為M=1,Z10=1,所以Z寄存器需要左移一位,第一位Z0==0
所以最后Y寄存器變為
所以最后得到的三個移位寄存器是
秘鑰是S0==1,
就這樣得到了第一位秘鑰,如果需要64位秘鑰,則按照上述進行循環64次操作即可。
怎么樣是不是很簡單。給個贊唄