VBA加密 Base64 AES 国密
加密:明文P与密钥K分组后,对每组:明文组P与密钥组K处理->轮密钥加->10轮加密->密文组
解密:对每组:密文组->轮密钥加->10轮解密->明文组
以128位密钥分组为例:加密共10轮,第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。第十轮迭代不执行列混合。解密同理。
AES加密:
Private Const Str As String = "1111111111111111" ' 加密字符串
Private Const StrKey As String = "1111111111111111" ' 密钥
Private Const StrIv As String = "1111111111111111" '16位的偏移
Sub TestAES()
Dim decrypt, encrypt As String
encrypt = AesHelper(Str, StrKey, StrIv, True, False)
decrypt = AesHelper(CStr(encrypt), StrKey, StrIv, False, False)
Debug.Print ("Aes加密===" + encrypt + ",解密===" + decrypt)
End Sub
Base64加密:
Private Const Str As String = "1111111111111111" ' 加密字符串
Sub TestBase64()
encrypt = Base64Encode(Str)
decrypt = Base64Decode(CStr(encrypt))
Debug.Print ("Base64加密===" + encrypt + ",解密===" + decrypt)
End Sub
国密:
Private Const Str As String = "1111111111111111" ' 加密字符串
Private Const StrKey As String = "1111111111111111" ' 密钥
Private Const StrIv As String = "1111111111111111" '16位的偏移
Sub testSm4CBC()
Dim sm4 As sm4
Set sm4 = New sm4
sm4.iv = StrIv
sm4.Key = StrKey
encrypt = sm4.Encrypt_CBC(Str)
decrypt = sm4.Decrypt_CBC(CStr(encrypt))
Debug.Print ("CBC加密===" + encrypt + ",解密===" + decrypt)
End Sub
Sub testSm4ECB()
Dim sm4 As sm4
Set sm4 = New sm4
sm4.iv = StrIv
sm4.Key = StrKey
encrypt = sm4.Encrypt_ECB(Str)
decrypt = sm4.Decrypt_ECB(CStr(encrypt))
Debug.Print ("ECB加密===" + encrypt + ",解密===" + decrypt)
End Sub
下载地址:
关注公众号《软设开发》领取更多实用工具,回复关键字:加密
原文链接