消息摘要算法实现字符串加密

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Encryption {
    /**
     * 静态方法的返回值必须是静态变量
     */
    static String encryptedPassword;

    /**
     * @param password 在其他类中调用该方法,将需要加密的字符串作为参数传进来
     * @return 将字符串加密后得到的字符串返回
     */
    public static String getEncryption(String password) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA");
            messageDigest.update(password.getBytes());
            encryptedPassword = new BigInteger(messageDigest.digest()).toString(32);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return encryptedPassword;
    }
}

笔记:

  1. 静态方法在声明的同时会被自动分配内存,因此可以直接在其他类中使用类名调用,例如在Register类中对用户密码进行加密。
public class Register extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        /* 对用户提交的明文密码进行加密后得到密文 */
        password = Encryption.getEncryption(password);
    }
}
  1. MessageDigest类提供消息摘要算法,如MD5SHA等,信息摘要算法是安全的单向哈希函数,接收任意长度的数据,输出固定长度的哈希值。
  2. public static MessageDigest getInstance(String algorithm,String provider) throws NoSuchAlgorithmException, NoSuchProviderException方法返回消息摘要对象实现指定的消息摘要算法。
  3. 字符串调用public byte[] getBytes()方法使用平台默认字符集将字符串编码为byte序列,并将结果存储在一个新的byte数组中返回.
  4. MessageDigest对象调用public void update(byte[] input)方法使用指定的byte[]更新摘要。
  5. public byte[] digest()是用于产生散列值字符数组的方法。
  6. BigInteger(byte[] val)byte[]转换成大数,BigInteger类支持任意精度的整数,toString()将数字转换成字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值