当前位置: 首页 > 编程语言 > C#

C#与PHP、ColdFusion、Ruby、Python的兼容加密分享

时间:2023-04-10 23:36:39 C#

C#与PHP、ColdFusion、Ruby、Python的兼容加密我们正在开发一个接受POST请求的服务。一些POST数据需要在POST之前加密,因为它将存储在表单的隐藏字段中。该应用程序是用C#编写的,但我们希望第三方客户端能够轻松地与其集成。我们发现大多数客户使用PHP、ClassicASP或VB.Net。第三方应该只做加密。我们做解密。没有双向通信。加密算法、填充模式和其他选项的最兼容组合是什么?假设您有一种安全的方式来共享密钥(无论是RSA加密、通过SSH或HTTPS链接检索,还是通过安全电话线呼叫其他开发人员),任何主要的现代加密(例如AES,如上所述)通过@EdHaber)是合适的。我会接受他的AES建议。应该有用于PHP、VB、Ruby等的库。但是,请记住,在“没有双向通信”的情况下,您将必须找到一种离线方法来为加密方安全地加密对称密钥。如果您的意思是第三方无法解密数据,那么您将需要使用非对称加密算法,例如RSA。这将是第三方使用您的公钥加密数据,然后只有您可以使用未公开的私钥解密数据。你提到的所有语言都应该有RSA实现。如果您不关心第三方是否可以解密数据,那么AES就是您的不二之选。您将拥有与第三方共享的密钥。此密钥用于加密和解密。我会使用AES进行批量数据加密,使用RSA来加密AES密钥。如果数据足够小,那么只需使用RSA加密整个数据即可。EdHaber说我会使用AES进行批量数据加密,并使用RSA作为AES密钥。如果数据足够小,那么只需使用RSA加密整个数据即可。我认为这是一个很好的解决方案。我要做的是让您的应用程序发布一个API来获取公共RSA密钥。当第三方想要向您发送内容时,它会获得公钥。然后它生成一个会话密钥,使用块密码(即AES)进行实际加密,并通过使用您的公钥加密将密钥发送给您。您使用私钥来解密会话密钥。然后,第三方使用AES(使用您也发布的填充方案)加密为您准备的数据并将其发送给您。您使用会话密钥对其进行解密。上述方法存在一些问题。由于您没有发送任何东西(除了发布您的公钥),您无法控制会话密钥的生成方式。这意味着第三方可以使用非常不安全的方式生成会话密钥,而您永远不会知道。第二个问题就是大家要发数据都得像你一样填AES的数据。所以你必须确保每个人都协调一致。第二个问题不是大问题,但第一个问题可能是个问题,尤其是如果您不太信任第三方,请从良好的加密安全随机数生成器生成非常好的会话密钥您可以实现自己的基于位加密很容易在XOR密钥上。稍加思考和独创性,您就可以想出最适合您的应用程序的东西。这是一个PHP示例:functionXORencryption($InputString,$KeyPhrase){$KeyPhraseLength=strlen($KeyPhrase);for($i=0;$iColdFusion具有加密和解密功能,能够处理一系列算法和编码,包括上面推荐的AES。信息:http://www.cfquickdocs.com/cf8/?getDoc=encrypt#Encrypt快速示例代码:Key=generateSecretKey('AES',128)EncryptedText=encrypt(Text,Key,'AES','Hex')Text=decrypt(EncryptedText,Key,'AES','Hex')这个库为PHP提供类似的功能:http://www.chilkatsoft.com/p/php_aes.asp...以及Java、Python、Ruby和其他...http://www.example-code.com/java/crypt2_aes_matchPhp.asphttp://www.example-code.com/python/aes_stringEncryption.asp听起来像RSA是你的算法。为什么不通过HTTPS公开你的服务器?这样,任何可以处理HTTPS的客户端都可以安全地使用该服务。以上就是《C#学习教程:C#与PHP、ColdFusion、Ruby、Python兼容加密分享》的全部内容。如果对您有用,需要了解更多C#学习教程,希望您多加关注---本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: