我正在寻找一种可靠的方法来验证解密加密的有效负载后返回的字符串是否为垃圾值(如: =z { Z : k/ ˃ d A * Ԥ = M 5)。 我试图用不同的公钥解密加密的字符串,所以,如预期的那样,我得到了上面发布的垃圾字符串。我的问题是,在c#中验证返回的字符串是一个有效的字符串还是垃圾值的最佳方法是什么?如何验证Bouncy Castle rsa解密返回的垃圾数值错误密钥
0
A
回答
0
发现乔恩斯基特这里的答案:https://stackoverflow.com/a/7254261/2858235
foreach (char c in value)
{
if (c < 32 || c > 126)
{
...
}
}
0
你建议,如果返回的字符串是ASCII(ASCII技术上的一个子集)......考虑到你的名字和姓氏将只检查该解决方案,你应该有第一手的知识,世界不是由ASCII字符串组成的。 Unicode是“发明”的原因。现在,正如here所写,RSA是“可延展的”。一个非常简单的解决方案是在加密所有内容之前将原始文本的散列(例如使用SHA256)附加/前缀到文本中,然后在解密后验证散列是否正确。
0
如果您只关注RSA,请使用适当的填充方案,如PKCS#1 v2.0中定义的Optimal Asymmetric Encryption Padding (OAEP)。它内部使用散列来检查是否有错误。 C#对此有本地支持,如果发生错误,如破碎的密文或错误的密钥被使用,你将会得到一个错误。如果您对hybrid encryption(RSA +某些分组密码)感兴趣,我建议您使用RSA-OAEP以及经过验证的操作模式,如AES-GCM(可通过BouncyCastle在C#中获得)。这样,您可以确定所有(恶意)操作。
相关问题
- 1. 使用Bouncy Castle的C#RSA解密
- 2. 用错误的密钥强制解密文件 - C#+ Bouncy Castle
- 3. C#bouncy castle生成rsa客户端/服务器rsa密钥对
- 4. 使用RSA Bouncy Castle加密/解密无法正常工作
- 5. Bouncy Castle需要很长时间才能生成RSA密钥对
- 6. Bouncy Castle,RSA:将密钥转换为字符串格式
- 7. Bouncy Castle NTRU加密出口公钥
- 8. 使用Bouncy Castle阅读PEM RSA公钥仅使用Bouncy Castle
- 9. RSA解密错误
- 10. 如何使用Bouncy Castle和java解密secureZip加密文件?
- 11. Python:Pycrypto RSA公共密钥加密错误
- 12. 用公钥解密RSA
- 13. 如何在Bouncy城堡c#中使用RSA打开密钥?
- 14. RSA密钥加密/解密问题
- 15. McEliece(Bouncy Castle)获取公钥返回
- 16. 无法解密RSA加密密钥
- 17. Bouncy Castle PBEWITHSHA256AND256BITAES加密C#
- 18. iPhone OS!使用Bouncy Castle(Java)生成的公钥生成RSA加密
- 19. 错误RSA数据爪哇解密:javax.crypto.BadPaddingException:解密错误
- 20. 为什么解密函数返回垃圾代码?
- 21. 如何在C中使用Bouncy Castle签署公共PGP密钥#
- 22. Base64解码返回垃圾
- 23. SAML RSA和AES解密 - 结尾的随机垃圾字节
- 24. BadPaddingException RSA加密/解密错误
- 25. 错误的RSA密钥的paramiko LIB
- 26. 使用XML专用密钥解密RSA
- 27. Android:如何用RSA密钥解密一个openssl加密文件?
- 28. Bouncy Castle从公钥加密会话包中提取PGP会话密钥
- 29. 如何使用RSA私钥解密JWT
- 30. 如何验证javax密码密钥?
我同意这将是一个更干净的方式,但由于在我的情况下,它将需要客户端的变化(因为他们正在加密字符串,我在服务器端代码解密),我将不得不与我的解。另外,如果我只考虑ASCII的那个“子集”,因为我期望我的字符串只有那些字符,所以我认为这样可以。 – tavier
顺便说一句,只是好奇,我的名字和姓氏有什么问题。在英语中,它落在ASCII字符的子集内吗? :) – tavier
@AshishAgrawal大概有一半的美国程序员认为所有的字母都包含在AZ字符集中......他们甚至无法想象其他语言可能需要非ASCII字符,比如àèéìòù(甚至不考虑中文,日语,各种印度语......)......你可以在每个正则表达式问题中看到这个(“我怎么检查它是否是一个单词?使用类似'[A-Za-z] *'的东西'。给定你的名字,你应该是(或者你的父母应该是)来自世界上其中AZ不是你的本地字符集的地方 – xanatos