Cryptography 如何在java或c+中实现分组密码操作模式+;? 我想在C++或java中实现电子码本(ECB)密码块链接(CBC)密码反馈(CFB)输出反馈(OFB)计数器(CTR)模式。但我不知道如何开始,从哪里开始。谁能给我建议一下要做的步骤吗?

Cryptography 如何在java或c+中实现分组密码操作模式+;? 我想在C++或java中实现电子码本(ECB)密码块链接(CBC)密码反馈(CFB)输出反馈(OFB)计数器(CTR)模式。但我不知道如何开始,从哪里开始。谁能给我建议一下要做的步骤吗?,cryptography,Cryptography,java是一个很好的起点。它给出了组成API的类的详细说明,以及它们的使用方式,以及实现自定义加密技术需要扩展哪些类。您尝试执行的大部分操作已经作为标准crypto API的一部分提供,因此,一旦您获得了它的句柄,您只需为自己的目的对其进行自定义 此外,还有一个官方java,用于使用自定义加密技术扩展此API,这可能也很有用。它实际上非常简单,假设您有一个名为块密码加密(明文、密钥)的函数以一块明文和一个密钥作为输入,并返回一块密文 现在,假设您有一个纯文本块数组(例如,pt[i]是第i个纯文本

java是一个很好的起点。它给出了组成API的类的详细说明,以及它们的使用方式,以及实现自定义加密技术需要扩展哪些类。您尝试执行的大部分操作已经作为标准crypto API的一部分提供,因此,一旦您获得了它的句柄,您只需为自己的目的对其进行自定义


此外,还有一个官方java,用于使用自定义加密技术扩展此API,这可能也很有用。

它实际上非常简单,假设您有一个名为
块密码加密(明文、密钥)的函数
以一块明文和一个密钥作为输入,并返回一块密文

现在,假设您有一个纯文本块数组(例如,
pt[i]
是第i个纯文本块)和一个用于密文块的数组
ct
。要做到这一点,需要:


for i from 0 to len(pt)-1:  
  ct[i] = block_cipher_encrypt(pt[i], key)
对于CBC模式,您还需要一个IV,但它仍然非常简单:


ct[0] = block_cipher_encrypt(XOR(pt[0], IV), key)
for i from 1 to len(pt):
  ct[i] = block_cipher_encrypt(XOR(pt[i], ct[i-1]), key)

至于其他模式,请看维基百科的文章。它们为加密和解密提供了很好的框图。这就是我对上面的伪代码所做的。

谢谢,我已经学习了不同模式的理论部分,我们的目标是使用带密钥的加密算法对明文进行加密。我的问题是使用哪种加密算法以及如何选择密钥?密钥应该是什么?@Nandy,如果这是一个实际的产品,将由现实生活中的人使用的一天,我建议你聘请专家顾问。答案将在很大程度上取决于手头的项目。