Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 当涉及不同的平台时,关于加密的最佳实践是什么?_Encryption_Cryptography - Fatal编程技术网

Encryption 当涉及不同的平台时,关于加密的最佳实践是什么?

Encryption 当涉及不同的平台时,关于加密的最佳实践是什么?,encryption,cryptography,Encryption,Cryptography,问题是,在处理不同平台的加密和解密时,最可取的方法是什么 据我所知,当一个人想要处理这样的场景时,他/她必须考虑某些事情。比如说 加密/解密算法 填充图案 两侧字符编码 密码密钥和块大小 当然,一个人想要使用的加密/解密算法在两边都必须是相同的,我想我可以对剩下的三件事说同样的话 请建议我在处理以下或类似场景时应遵循的步骤 c语言中的加密和java语言中的解密 php中的加密和java中的解密 我会添加字节顺序(数字的小端和大端),但是,只要选择相同的算法(和参数)和数据格式,在一个平台上加密的

问题是,在处理不同平台的加密和解密时,最可取的方法是什么

据我所知,当一个人想要处理这样的场景时,他/她必须考虑某些事情。比如说

  • 加密/解密算法
  • 填充图案
  • 两侧字符编码
  • 密码密钥和块大小
  • 当然,一个人想要使用的加密/解密算法在两边都必须是相同的,我想我可以对剩下的三件事说同样的话

    请建议我在处理以下或类似场景时应遵循的步骤

  • c语言中的加密和java语言中的解密
  • php中的加密和java中的解密

  • 我会添加字节顺序(数字的小端和大端),但是,只要选择相同的算法(和参数)和数据格式,在一个平台上加密的内容应该可以在另一个平台上解密,反之亦然。例如,今天SSL就是这样工作的。

    良好互操作性的一个非常重要的方面是标准遵从性

    好的密码标准伴随着测试向量而来。如果两端实现了相同的规范,并且相关的测试用例已经过验证,那么它们成功地相互对话的可能性就大得多

    例如,假设您需要从密码派生AES密钥。如果您使用openssl,您可能会尝试使用公共的
    EVP\u BytesToKey
    函数。不幸的是,这不是一个标准的派生算法,如果在另一端也没有openssl,您将发现自己陷入麻烦。使用PBKDF2这样的标准更好,因为大多数库都实现了一个清晰、众所周知且广泛使用的规范()

    不幸的是,加密标准往往只关注原语,而且常常需要将几个原语嫁接在一起。“嫁接”可能被证明是互操作性分崩离析的领域。出于这个原因,我建议使用尽可能广泛的标准化算法,即使代价是一些额外的复杂性

    例如,如果您想要加密某些内容,最好选择标准的身份验证模式,如CCM(在中定义)。您可以一次性获得以下方面的互操作性:

    • 加密
    • 认证
    • 填充物
    • 静脉注射

    如果您真的对互操作性感兴趣,请尝试使用容器格式,如CMS。它部署了BER/DER编码的ASN.1,它是消息结构的二进制编码(类似于XML,它是消息的文本编码)。不幸的是,并不是所有的平台都包含这样的消息格式,但如果支持它们,您可以合理地确定它们可以对消息进行编码/解码


    PHP很棘手,它要么依赖openssl包装器,要么依赖可怕的mcrypt库。

    Hi Puru,欢迎来到Stack Overflow,请编辑您的问题,以便突出显示实际问题。简单地要求人们分享知识会引发讨论,这会使你的问题面临被社区关闭的危险,因为这是没有建设性的。使用此链接修改您的帖子,并就您不了解的内容提出更具体的问题。祝你好运!:)谢谢你。我已经按照您的建议进行了编辑。您想要对称加密还是非对称加密(例如RSA)?前者处理字节(因此大端/小端对密文不重要。另一个使用整数)。