我想了解更多关于AES如何通过实现在此链接上描述的算法http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf。我有两种加密和解密方式,我知道我的加密是正确的,因为在我用来测试代码的链接中提供了一些示例。但是,我不确定如何测试我的解密算法是否正常工作。 我遇到的问题是我的AES实现不适用于16B输入(它返回垃圾)。然而,它正在为25KB的输入工作。此外,它的工作原理是,它准确地加密和解密大部分文件,除了开头的字节和文件末尾的字节。不幸的是,我目前没有权限访问整个代码(如果需要,我可以记住所有代码)以便在此处发布。我希望看到有人会根据我的描述了解可能是什么问题。我不完全理解除了开始和结束字节之外,文件是如何被解密的,因为这应该是ECB模式,所以不应该把整个文件当作垃圾而不是开始和结束(因为ECB接受一块输入和输出相同大小的输出块)。AES-128加密/解密
回答
听起来好像你真的在使用CBC模式,而且iv是不一样的,可能只是为了iv而捡垃圾。请参阅CBC mode。
最后的错误字节可能是一个填充问题。你如何处理要加密的输入,其长度不是块大小的倍数?
虽然这是问题。我没有使用IV,也没有使用下一个明文输入XOR我的密文。我确定我正在使用ECB,因为我只是将输入复制到状态数组中,对其进行加密,将其转换为数组,然后重复该过程。没有任何链接。 –
你不提填充,你如何处理?你需要做的是获得16字节,20字节和32字节的工作,这些都是简单的情况。为其他来源获取参考良好加密并进行比较,是加密还是解密正确?选择一个破碎的工作。将示例输入和输出添加到十六进制问题中。 – zaph
啊,我的道歉。之所以我没有提到填充,是因为我知道知道ECB和CBC都需要填充,除非你试图实现密码窃取,但也有它自己的缺点,这是众所周知的。我在我的代码中实现了填充,并且通过将文件长度四舍五入到16的最大倍数(因为我使用的AES的输入块大小为16字节)。之后,我解密密文并只输出到原始文件的未填充长度。 –
- 1. 解密AES128加密的数据
- 2. Node.js aes128加密/解密端口到PHP
- 3. 解密的NSString与AES128加密
- 4. 加密mbed微控制器(C++)上的AES128-CBC并解密nodejs中的AES128-CBC
- 5. Objective-C的AES128加密
- 6. libgcrypt中的AES128不加密
- 7. 目标c和C#之间使用AES128进行加密/解密
- 8. 使用AES128 CTR在给定密钥的iOS中加密和解密随机NSString
- 9. AES128 iphone加密匹配,直到最后
- 10. pycrypto加密/解密,解密
- 11. 解密 - 加密加密JS
- 12. 如何使用AES-NI指令和GCC实现AES128加密/解密
- 13. 解密,加密
- 14. 任何一个可以帮助我如何解密(AES128),这在JAVA(AES解密128)进行加密
- 15. PHP - 解密加密密码
- 16. 密码加密/解密
- 17. 加密和解密密码
- 18. 加密和解密
- 19. Rails加密解密
- 20. 加密/解密web.config
- 21. RSA加密/解密
- 22. Rijndael加密/解密
- 23. Cookie加密/解密
- 24. 解密加密值?
- 25. 加密和解密
- 26. 加密和解密
- 27. FormsAuthentication加密/解密
- 28. 解密加密ViewState
- 29. 加密和解密
- 30. AES加密/解密
如果不是块大小的倍数,是否填充输入? – Buddy
s/EBC/ECB /(电子代码簿) –
@AlanStokes注明并修复。 –