Encryption 使用Base64进行加密和解密,以及我们需要在哪里进行加密和解密

Encryption 使用Base64进行加密和解密,以及我们需要在哪里进行加密和解密,encryption,base64,Encryption,Base64,我正在做一个应用程序,用户可以登录并查看与特定网络相关的所有GIS数据(全球信息系统) 这是一个正常的领域(我的意思是不涉及金钱) 我的问题是,当用户在登录页面登录时(我计划使用base64.encode来保护密码) 关于上述问题,我有3个问题 在这里使用base64.encode合适吗 当用户在登录页面提交用户名和密码时,我计划在Servlet级别使用encrypt(即使用req.getparameter(“密码”) 静态公共字符[]编码(字节[]数据) { } 请告诉我这是否正确 我到底需要

我正在做一个应用程序,用户可以登录并查看与特定网络相关的所有GIS数据(全球信息系统)

这是一个正常的领域(我的意思是不涉及金钱)

我的问题是,当用户在登录页面登录时(我计划使用base64.encode来保护密码)

关于上述问题,我有3个问题

  • 在这里使用base64.encode合适吗
  • 当用户在登录页面提交用户名和密码时,我计划在Servlet级别使用encrypt(即使用
    req.getparameter(“密码”)

    静态公共字符[]编码(字节[]数据) {

    }

  • 请告诉我这是否正确

  • 我到底需要在哪里解密密码??(也就是说,我需要用加密值将密码存储在数据库中,然后在DAO层解密密码吗

  • 请告诉我这是否正确???

    base64不是一种加密方案,它是一种编码方案。它不提供任何安全性,除了以一种根据经验很容易识别的方式略微模糊传输的数据。不要出于安全目的使用它

    如果你想保护你的用户服务器流量不被嗅探,你所需要的几乎所有东西都已经在HTTPS/SSL中实现。使用它可以节省你的开发时间,并防止自己因内部方案开发不足而出错。

    有两种不同的(ish)这里的问题:身份验证和机密性。如果您需要机密性,请使用HTTPS。这样您就不需要担心传输加密,只需以明文发送所有内容(因为SSL将为您执行完全连接加密)

    至于密码存储,你不应该在任何地方存储明文密码。总是先散列密码(至少,寻找一种更强大的方法)并将散列值存储在数据库中。当用户发送密码时,对他们发送的内容进行散列,并将其与数据库中的值进行比较,如果匹配,则表明他们的密码是正确的

    如果您不想使用SSL/HTTPS,那么您的想法是正确的,您需要避免以明文形式发送密码。您可以通过多种方式实现这一点,在我看来最合适的方式是,在登录页面中,通过生成随机字符串并将其回显到javascript v中,从php发送随机“nonce”可变的

    然后使用javascript进行计算

    hash(hash(password) + nonce);
    
    其中hash是一个安全的hash函数,如MD5或SHA

    这样,您就可以在服务器上验证密码,而无需用户以明文形式发送密码。为此,您可以对存储在数据库中的值进行哈希运算,并将其与用户发送的值进行比较,如果值匹配,则表明密码是正确的

    所有这一切的全部目的是通过确保用户不会向服务器发送两次相同的登录字符串来防止出现这种情况。攻击者可以窃听并记录任意数量的登录,直到同一用户帐户使用相同的nonce之前,这些登录都将是无用的。避免这种情况只需使用非常大的nonce即可。


    但是,请注意,这种方法不能防止或。这些类型的攻击需要相互身份验证,这只能通过使用第三方(如证书颁发机构)来实现,这让我们回到SSL/HTTPS。非常感谢您的回复,我真的不知道这是两个术语加密n和编码。那么我可以使用密码进行加密吗?那么你的意思是使用SSL,这样那里的一切都得到了保护,谢谢你的起点,但我很高兴知道为什么Algorthim应该与加密结合使用?非常感谢你花时间这么好地回答这个问题,这是你的一个明确解释你觉得你在找“暂时的”