Security 在安全性方面,它对顺序散列和加密有什么区别吗?

Security 在安全性方面,它对顺序散列和加密有什么区别吗?,security,encryption,hash,cryptography,Security,Encryption,Hash,Cryptography,我正在用java实现一个密码保险库程序。我已经为加密编程了三重DES,为哈希编程了SHA256 我的问题是,如果我先对原始数据(密码)进行散列,然后对其进行加密,或者先对数据(密码)进行加密,然后对加密数据进行散列,会有什么区别吗。我最担心的是,它是否会在安全方面做出任何重大改变 感谢您的评论,您不希望仅使用散列作为消息身份验证代码。存在适合此应用程序的基于哈希的MAC(适当地称为)。在这种情况下,您可能希望使用HMAC-SHA256。还请记住,您的MAC电脑需要一个单独的密钥(使用相同的密钥进

我正在用java实现一个密码保险库程序。我已经为加密编程了三重DES,为哈希编程了SHA256

我的问题是,如果我先对原始数据(密码)进行散列,然后对其进行加密,或者先对数据(密码)进行加密,然后对加密数据进行散列,会有什么区别吗。我最担心的是,它是否会在安全方面做出任何重大改变


感谢您的评论,您不希望仅使用散列作为消息身份验证代码。存在适合此应用程序的基于哈希的MAC(适当地称为)。在这种情况下,您可能希望使用HMAC-SHA256。还请记住,您的MAC电脑需要一个单独的密钥(使用相同的密钥进行加密,MAC电脑是一个大禁忌)


但是关于你的问题本身,你的问题归结为加密然后MAC vs MAC然后加密。根据这一点,最好的做法是加密然后MAC,只要你确保你MAC所有关于密文的信息,包括IV和一个算法标识符,如果你允许除3DE以外的加密算法。您可以获得密文和明文的完整性,并且不必通过解密过程来验证明文。

这可能是@oleksii的一个好问题,谢谢,我也会在那里尝试一下。因为这是一个密码保险库,我假设您正在尝试以明文形式将密码取回?在这种情况下,你想用哈希实现什么?@PeterElliott问题是,密码存储在一个XML文件中(存储在本地),XML文件将加密数据保存在其中。哈希(MAC)仅用于确保攻击者是否更改了任何密码。原始哈希算法不是MAC方案,不会提供MAC的安全性。另外,你为什么要使用3DES而不是AES?你绝对正确地使用单独的密钥进行加密和MAC。也许我会接受你的建议,使用AES来加快性能。另外,我刚刚找到另一个链接,我认为“加密然后MAC”的情况似乎适合我的情况。谢谢