• Java加密解密


    • 第一部分:

    BASE64 编码是一种常用的字符编码,在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码。下面是本人编的两个小的函数,分别用于 BASE64 的编码和解码:
    import sun.misc.BASE64Encoder;
    import sun.misc.BASE64Decoder;

    // 将 s 进行 BASE64 编码
    public static String getBASE64(String s) {
    if (s == null) return null;
    return (new sun.misc.BASE64Encoder()).encode( s.getBytes() );
    }

     // 将 BASE64 编码的字符串 s 进行解码
    public static String getFromBASE64(String s) {
    if (s == null) return null;
    BASE64Decoder decoder = new BASE64Decoder();
    try {
    byte[] b = decoder.decodeBuffer(s);
    return new String(b);
    } catch (Exception e) {
    return null;
    }
    }

    • 第二部分

    Java中提供了计算报文摘要的另一个简单的方法,那就是使用java.security.MessageDigest类。下列代码片断显示了如何将MD5报文摘要算法(128位的摘要)应用到密码字符串:
    MassageDigest md=
    MessageDigest.getInstance("MD5");
    md.update(originalPwd.getByetes());
    byte[] digestedBytes=md.digest();

    也使用报文摘要创建校验和、文本的唯一ID(也叫做数字指纹)。在签写ARJ文件会发生:校验和是根据ARJ文件的内容计算出来的,然后被加密,并且用base64的加密格式存放在manifest.mf文件中。base64是编码任意二进制数据的一种方法,得到的结果仅包含可打印字符(注意,base64编码数据占用的空间比转换前多三分之一)。由于报文摘要算法输出的结果是字节数组,可以使用base64编码将哈希字节转换成字符串,以便能将该字符串存放在数据库的varchar字段中。现在有许多base64编码器,但是最简单的方法是使用weblogic.jar库中的编码器:weblogic.apache.xerces.utils.Base64。该类的作用微乎其微,如下面的代码例子所示:

    String digestedPwdString =
    new String(Base64.encode(digestedPwdBytes));

     

    • 第三部分


    import javax.mail.internet.*;
    import java.security.*;
    public String getEncodedHash(String clearText){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    OutputStream out = MimeUtility.encode(baos,
    "base64");
    MessageDigest md = MessageDigest.getInstance(
    "SHA");
    if(clearText == null) clearText =
    "";
    byte [] in = clearText.getBytes();
    byte [] digested = md.digest(in);
    out.write(digested);
    out.close();
    return new String(baos.toByteArray(),
    "ISO-8859-1");
    }


  • 相关阅读:
    VirtualBox设置共享文件夹和镜像访问的方法
    虚拟机文件越来越大解决方案
    linux磁盘清理方法 Linux 下垃圾清理工具 BleachBit
    linux上怎么切换不同版本的arm-linux-gcc?只需改一行函数
    windows桌面添加右键环境
    各种机械键盘轴的差别,究竟什么轴好
    XML是什么,它能够做什么?——写给XML入门者
    MATLAB中导入数据:importdata函数
    理解ThreadLocal
    Leetcode:best_time_to_buy_and_sell_stock_II题解
  • 原文地址:https://www.cnblogs.com/BloodAndBone/p/1809225.html
Copyright © 2020-2023  润新知