TripleDES 16 字节不工作
TripleDES 16 Byte not working
我正在尝试将一些项目从 .net framework 4.5
迁移到 .net core
。
尝试迁移旧的 crypting/decrypting
方法时会出现问题。
该方法是一个 TripleDES
,其密钥是 MD5 散列。
MD5 散列总是 returns 16 字节。
这在 .net framework 4.5
中运行良好,但在 .net core
中 System.Security.Cryptography.Algorithms
TripleDES
中仅接受 24 字节的 KeySize。在 4.5 中,它接受 16 个字节或 24 个字节。
有什么我可以尝试的解决方法吗?
稍后编辑:
TripleDes class 初始化时调用新的 TripleDesImplementation,即 this 。这里声明 CNG 不支持 128 位密钥。
遗憾的是,Framework 4.5 没有使用 TripleDes 实现的开源版本。
但是,假设它遵循 Triple DES 的常规约定,当它提供两个密钥时,它会重新使用第一个密钥作为第三个密钥,您应该能够使用现有的 16 字节密钥并重复前 8 个字节组成一个 24 字节的密钥,它应该产生与您之前获得的相同的结果。
我正在尝试将一些项目从 .net framework 4.5
迁移到 .net core
。
尝试迁移旧的 crypting/decrypting
方法时会出现问题。
该方法是一个 TripleDES
,其密钥是 MD5 散列。
MD5 散列总是 returns 16 字节。
这在 .net framework 4.5
中运行良好,但在 .net core
中 System.Security.Cryptography.Algorithms
TripleDES
中仅接受 24 字节的 KeySize。在 4.5 中,它接受 16 个字节或 24 个字节。
有什么我可以尝试的解决方法吗?
稍后编辑: TripleDes class 初始化时调用新的 TripleDesImplementation,即 this 。这里声明 CNG 不支持 128 位密钥。
遗憾的是,Framework 4.5 没有使用 TripleDes 实现的开源版本。
但是,假设它遵循 Triple DES 的常规约定,当它提供两个密钥时,它会重新使用第一个密钥作为第三个密钥,您应该能够使用现有的 16 字节密钥并重复前 8 个字节组成一个 24 字节的密钥,它应该产生与您之前获得的相同的结果。