AES加密使用C#和Java解密 [英] AES encryption using C# and decryption in Java
本文介绍了AES加密使用C#和Java解密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只是想确认我对 AES 工作原理的理解.
I just want to confirm my understanding of how AES works.
如果 company#1 正在加密数据,并将此数据发送给 company#2 进行解密,我们假设其中一个使用 C#,另一个使用 Java.
If company#1 is encrypting the data, and sending this data to company#2 to decrypt, and let's presume that one of them uses C# and the other Java.
只要双方使用相同的共享密钥,双方是否应就其他设置/配置达成一致以确保数据正确加密和解密?
As long as both are using the same shared secret key, is there anything else setting/configuration wise both parties should agree upon to make sure the data is correctly encryption and decrypted?
推荐答案
双方在很多方面都必须达成一致:
There is a lot that both have to agree upon:
- 共享密钥
- 多长时间了?(是否需要按键填充?)
- 实际密钥是否从另一个密钥或密码派生而来,并带有额外的盐?
- 使用了哪个密钥推导函数,它们的参数是什么?PBKDF2, bcrypt, scrypt, ...
- IV 是否与密钥一起派生?(通常通过从密钥派生函数请求密钥大小 + IV 大小输出)
- 块密码,如 AES、Triple DES、Twofish、Rijndael ......
- 密码参数,例如块大小,以防它是可变的
- 对于基于 IV 的模式:IV 是如何生成的?它是随机生成并放入容器格式中,还是与密码中的密钥一起派生,因此不需要放入密文容器中?
- 对于 CTR 等基于随机数的模式:随机数(有时称为 IV)有多大?
- 对于 CFB 等参数化模式:段有多大?
- 作为 GCM、EAX、SIV 等操作模式,...
- 作为单独的 encrypt-then-MAC/MAC-then-encrypt/encrypt-and-MAC 方案与 MAC 类似 HMAC-SHA256、CMAC、HKDF、GHASH ......
- 是将所有内容从完成的二进制格式一起编码为文本格式,还是将组件单独编码并连接在一起?
- 在哪里放置 IV/nonce/salt(如果有)?(通常在实际密文之前)
- 在哪里放置身份验证标签(如果有)?(通常在实际密文之后)
- 加密消息语法是否适用?
这篇关于AES加密使用C#和Java解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文