java 用户名和密码明文传输,JavaScript基础教程 用户登录明文传输密码问题如何解决...

本篇教程介绍了JavaScript基础教程 用户登录明文传输密码问题如何解决,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

用户登录页面,获取到用户密码,用MD5加密,然后进行传输,服务器端获取的是一个加密过的密码。然后把从数据库里面获取的密码也用MD5加密,然后比较,验证登录。

为什么用这种方法呢,当时想了2个方案,一个是换成https服务器,然后购买一个证书(所有需要用钱的都要一层一层审批,我不知道审批下来后,我还有想做不),另一个就是今天要说的,javascript+ Java+md5

---------------------------------------------------------------------------------------------------前端------------------------------------------------------------------------------------------------------------

//MD5加密

function encryptionPassword(){

var hpassword=document.getElementById("cpassword").value;

var hash=MD5(hpassword)

document.getElementById("cpassword").value=hash.substring(22,32);

}

MD5方法的md5.js 代码最后给出,有点多

---------------------------------------------------------------------------------------------------后台------------------------------------------------------------------------------------------------------------

把从数据库获得的密码用MD5加密

password.equals(StringUtil.getMD5Str(operator.getPassword()).substring(22,32))

StringUtil工具类中具体代码如下:

/**

* MD5加密

* @修改时间:2015-06-08

* @修改作者:Wangj

*

*/

public synchronized static final String getMD5Str(String str) {

if (null == str) {

str = "";

}

String MD5Str = "";

try {

// JDK 6 支持以下6种消息摘要算法,不区分大小写

// md5,sha(sha-1),md2,sha-256,sha-384,sha-512

MessageDigest messageDigest = MessageDigest.getInstance("MD5");

messageDigest.update(str.getBytes());

byte b[] = messageDigest.digest();

int i;

StringBuilder builder = new StringBuilder(32);

for (int offset = 0; offset 

i = b[offset];

if (i 

i += 256;

if (i 

builder.append("0");

builder.append(Integer.toHexString(i));

}

MD5Str = builder.toString();

// LogUtil.println("result: " + buf.toString());// 32位的加密

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

return MD5Str;

}

最后是mds.js的代码

---------------------------------------------------------------------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中可以使用加密技术来保护数据传输的安全性。下面是一个简单的示例: 1. 选择一个加密算法,例如 AES。 2. 生成一个密钥,可以使用 SecureRandom 类来生成一个随机密钥。 3. 使用密钥初始化加密器和解密器,可以使用 Cipher 类来实现。 4. 将明文数据加密并发送到接收方。 5. 接收方使用相同的密钥初始化解密器并将密文数据解密成明文数据。 下面是一个示例代码: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class Encryption { public static void main(String[] args) throws Exception { String plainText = "Hello, world!"; String secretKey = "mysecretkey"; // Generate a secret key KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); SecretKey key = new SecretKeySpec(secretKey.getBytes(), "AES"); // Initialize the cipher Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, key); // Encrypt the data byte[] encryptedData = cipher.doFinal(plainText.getBytes()); // Send the encrypted data to the receiver // Receiver side // Initialize the cipher cipher.init(Cipher.DECRYPT_MODE, key); // Decrypt the data byte[] decryptedData = cipher.doFinal(encryptedData); // Print the decrypted data System.out.println(new String(decryptedData)); } } ``` 注意:在实际应用中,要使用更严格的加密算法和密钥管理方案来保护数据传输的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值