加密算法整理(哈希SHA, 奇偶校验, DES, 3DES, 3DES 分散, MAC, RSA, SM2) 持续更新

现有加密算法:

对称算法:DES / 3DES / SM4 / AES / SSF33 / RCX

非对称算法: RSA / SM2 / ECC / DSA / DH

信息摘要算法: SHA1 / SM3 / MD4 / MD5 / SHA256

 

目前银联规范银行卡中使用的安全加密算法分为两种:国际算法和国密算法

替换规则为:RSA <-> SM2, SHA - 1 <-> SM 3 , 3DES <-> SM4

 

简单总结几种算法的原理如下:

哈希SHA1: 由input生成20字节哈希值,不需要密钥,算法伪代码链接:

SHA1伪代码

奇 / 偶校验:每个字节第8位的值(0/1)需要保证整个字节1的个数为奇 / 偶数

 

DES:8字节(64bits)明文输入,密钥为8字节(64bits,参与密钥扩展的有效位数56bits),输入不足8字节,补位0x80...0

           流程图:

           实现代码:

3DES:两种密钥类型(16bytes / 24bytes)

             16bytes: KeyA || KeyB , 加密过程中,KeyA用于加密、KeyB用于解密

             24bytes: KeyA || KeyB || KeyC , 加密过程中,KeyA KeyB用于加密,KeyB解密

             DES0( K , M )表示用K对M进行DES加密,DES1( K , M )表示用K对M进行DES解密

             3DES的8字节输入M计算方法:

                                                            S = 3DES0( KeyA || KeyB , M ) = DES0 ( KeyA, DES1( KeyB, DES0( KeyA , M ) ) )                      (16bytes key)

                                                            S = 3DES0( KeyA || KeyB || KeyC , M ) = DES0 ( KeyC , DES1( KeyB , DES0( KeyA , M ) ) )                      (24bytes key)

              伪代码链接如下:

              3DES超过8字节输入M的算法分为两种:ECB / CBC

                      ECB算法: 1.首先将输入数据补位(80...0)使输入数据的字节数为8的倍数

                                            如:0x7834cda82b347e237ec83c           补位后:0x7834cda82b347e237ec83c80000

                                         2.将输入M以8字节为单位拆分为 M0,M1...Mn

                                         3.对于每个Mi进行3des加密: Si = 3DES0( KEY , Mi )

                                         4.将所有Si连接得到最终的密文:S = S1 || S2 || S3 || ... || Sn

                     CBC算法: 1, 2步同ECB算法1, 2步

                                        3.  将8字节初始向量 iv 与 M0 异或得到M0'

                                        4. 使用KEY对M0'进行3DES加密得到:S0 = 3DES0( KEY , M0' )

                                        5. 将S0 作为下一8字节的初始向量与下一8字节异或得到 M1' = M1 XOR S0

                                        6. 循环 4 , 5步计算得到Si

                                        7. 将所有Si连接得到最终密文: S = S1 || S2 || S3 || ... || Sn

                 &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值