首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net 1.1 C#加密/解密与java不同步的输出

.Net 1.1 C#加密/解密与java不同步的输出
EN

Stack Overflow用户
提问于 2015-02-12 05:45:39
回答 1查看 121关注 0票数 1

给定值:应该加密密钥以进行加密的参数

算法@>Net 1.1 C#:

  1. 首先将原始参数转换为bytesarry (使用Unicode小端编码) ->Byte_Expression。
  2. 填充字符填充Byte_Expression (0):填充因子为8(填充8字节) -> Byte_Expression8
  3. 现在将键从字符串转换为Base64encoded ByteArray -> ByteKEY。
  4. 加密的Byte_Expression8和DES3:
  5. 密码模式:欧洲央行(电子代码簿)
  6. 填充:与零
  7. 除杂:= {0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00}
  8. Key = ByteKEY (参考文献3)
  9. DES3ecryptedByteArray
  10. 将DES3ecryptedByteArray与Base64Encryption转换为字符串->加密参数
  11. 完成

使用了上面的Alogorithm @Java7 7。在欧洲央行加密模式下,它正在抛出一个错误,但是它在CBC模式下工作得很好。

结果:.Net和Java的输出是snyc的。

问题: java.security.InvalidAlgorithmParameterException:ECB模式不能使用IV

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 07:45:13

ECB不支持IV,因此在Java中不应该使用带有第三个参数的Cipher.init方法。有些库允许为欧洲央行插入一个IV值(特别是PHP的mcrypt包装器和明显的.NET),但是在这些情况下,IV只是被忽略了。幸运的是,我还没有看到一个只在欧洲央行加密期间第一个区块使用IV的实现。

如果使用CBC模式--欧洲央行不安全--那么零IV意味着第一个块将与欧洲央行模式(直接AES加密)相同。这意味着使用相同密钥的多个加密也不安全。CBC需要一个随机的IV值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28470188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档