【问题标题】:DES Encryption and decryption of hex using hex key pythonDES使用hex key python对hex进行加解密
【发布时间】:2014-04-23 20:06:05
【问题描述】:

如何在 python 中使用 DES 算法使用 8 字节十六进制密钥加密和解密十六进制文本?

我有一个十六进制文本 0x3a3456abcd4ff5cd 可以使用十六进制密钥进行加密,那么如何将这些值转换为等效的字符串,以便我可以使用现有的库来处理它们。

这是我尝试过的,但它代表 8 字节密钥到等效的 13 字节字符串:

from Crypto.Cipher import DES
text =(unichr(4).decode('utf-8')*8).encode('utf-8')

key1=(unichr(0x46)+unichr(0xb2)+unichr(0xc8)+unichr(0xb6)+unichr(0x28)+unichr(0x18)+unichr(0xf8)+unichr(0x84)).encode('utf-8')

key2=(unichr(0x4a)+unichr(0x5a)+unichr(0xa8)+unichr(0xd0)+unichr(0xba)+unichr(0x30)+unichr(0x58)+unichr(0x5a)).encode('utf-8')

des = DES.new(key1,DES.MODE_ECB)
cipher_text = des.encrypt(plain_text)
print 'the cipher text is ', cipher_text

des = DES.new(key2,DES.MODE_ECB)
print 'the decrypted text is: ', des.decrypt(cipher_text)

【问题讨论】:

  • “等价字符串”是什么意思?
  • @RobWatts 它就像 0x97 相当于 'a'
  • 您使用的是您自己选择的密钥,还是来自其他地方的密钥?
  • 我正在尝试实现 8 字节十六进制密钥集,我在一篇导致与 DES 冲突的文章中发现

标签: python hex des pycrypto


【解决方案1】:

要在您的示例中使用这两个键,请按如下方式分配它们:

key1 = '\x46\xb2\xc8\xb6\x28\x18\xf8\x84'

key2 = '\x4a\x5a\xa8\xd0\xba\x30\x58\x5a'

这将使每个密钥保持 8 个字节,允许您在 DES.new 中使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多