精华内容
下载资源
问答
  • 我的后端使用Java,所以我想知道如何使用 Java 解密MD5 Javascript加密?这是我正在使用的MD5函数的JS等效项:Ext.util.MD5 = function(s,raw,hexcase,chrsz) {raw = raw || false;hexcase = hexcase || fals...

    我正在使用ExtJS框架。我在 JavaScript中 有MD5函数来加密某些JSON。我的后端使用Java,所以我想知道如何使用 Java 解密MD5 Javascript加密?

    这是我正在使用的MD5函数的JS等效项:

    Ext.util.MD5 = function(s,raw,hexcase,chrsz) {

    raw = raw || false;

    hexcase = hexcase || false;

    chrsz = chrsz || 8;

    function safe_add(x, y){

    var lsw = (x & 0xFFFF) + (y & 0xFFFF);

    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);

    return (msw << 16) | (lsw & 0xFFFF);

    }

    function bit_rol(num, cnt){

    return (num << cnt) | (num >>> (32 - cnt));

    }

    function md5_cmn(q, a, b, x, s, t){

    return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);

    }

    function md5_ff(a, b, c, d, x, s, t){

    return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);

    }

    function md5_gg(a, b, c, d, x, s, t){

    return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);

    }

    function md5_hh(a, b, c, d, x, s, t){

    return md5_cmn(b ^ c ^ d, a, b, x, s, t);

    }

    function md5_ii(a, b, c, d, x, s, t){

    return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);

    }

    function core_md5(x, len){

    x[len >> 5] |= 0x80 << ((len) % 32);

    x[(((len + 64) >>> 9) << 4) + 14] = len;

    var a = 1732584193;

    var b = -271733879;

    var c = -1732584194;

    var d = 271733878;

    for(var i = 0; i < x.length; i += 16){

    var olda = a;

    var oldb = b;

    var oldc = c;

    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);

    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);

    c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);

    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);

    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);

    d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);

    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);

    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);

    a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);

    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);

    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);

    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);

    a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);

    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);

    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);

    b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);

    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);

    c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);

    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);

    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);

    d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);

    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);

    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);

    a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);

    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);

    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);

    b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);

    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);

    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);

    c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);

    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);

    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);

    c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);

    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);

    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);

    d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);

    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);

    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);

    a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);

    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);

    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);

    b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);

    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);

    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);

    c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);

    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);

    d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);

    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);

    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);

    a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);

    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);

    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);

    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);

    a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);

    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);

    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);

    b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);

    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);

    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);

    c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);

    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);

    b = safe_add(b, oldb);

    c = safe_add(c, oldc);

    d = safe_add(d, oldd);

    }

    return [a, b, c, d];

    }

    function str2binl(str){

    var bin = [];

    var mask = (1 << chrsz) - 1;

    for(var i = 0; i < str.length * chrsz; i += chrsz) {

    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);

    }

    return bin;

    }

    function binl2str(bin){

    var str = "";

    var mask = (1 << chrsz) - 1;

    for(var i = 0; i < bin.length * 32; i += chrsz) {

    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);

    }

    return str;

    }

    function binl2hex(binarray){

    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";

    var str = "";

    for(var i = 0; i < binarray.length * 4; i++) {

    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);

    }

    return str;

    }

    return (raw ? binl2str(core_md5(str2binl(s), s.length * chrsz)) : binl2hex(core_md5(str2binl(s), s.length * chrsz)) );

    };

    展开全文
  • 主要介绍了Java实现DES加密与解密md5加密以及Java实现MD5加密解密类 ,需要的朋友可以参考下
  • Java实现MD5加密以及解密类,附带测试类,具体见代码。MD5加密解密类——MyMD5Util,代码如下:view plaincopy to clipboardprint?package com.zyg.security.md5;import java.io.UnsupportedEncodingException;import...

    Java实现MD5加密以及解密类,附带测试类,具体见代码。

    MD5加密解密类——MyMD5Util,代码如下:

    view plaincopy to clipboardprint?

    package com.zyg.security.md5;

    import java.io.UnsupportedEncodingException;

    import java.security.MessageDigest;

    import java.security.NoSuchAlgorithmException;

    import java.security.SecureRandom;

    import java.util.Arrays;

    public class MyMD5Util {

    private static final String HEX_NUMS_STR="0123456789ABCDEF";

    private static final Integer SALT_LENGTH = 12;

    /**

    * 将16进制字符串转换成字节数组

    * @param hex

    * @return

    */

    public static byte[] hexStringToByte(String hex) {

    int len = (hex.length() / 2);

    byte[] result = new byte[len];

    char[] hexChars = hex.toCharArray();

    for (int i = 0; i < len; i++) {

    int pos = i * 2;

    result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4

    | HEX_NUMS_STR.indexOf(hexChars[pos + 1]));

    }

    return result;

    }

    /**

    * 将指定byte数组转换成16进制字符串

    * @param b

    * @return

    */

    public static String byteToHexString(byte[] b) {

    StringBuffer hexString = new StringBuffer();

    for (int i = 0; i < b.length; i++) {

    String hex = Integer.toHexString(b[i] & 0xFF);

    if (hex.length() == 1) {

    hex = '0' + hex;

    }

    hexString.append(hex.toUpperCase());

    }

    return hexString.toString();

    }

    /**

    * 验证口令是否合法

    * @param password

    * @param passwordInDb

    * @return

    * @throws NoSuchAlgorithmException

    * @throws UnsupportedEncodingException

    */

    public static boolean validPassword(String password, String passwordInDb)

    throws NoSuchAlgorithmException, UnsupportedEncodingException {

    //将16进制字符串格式口令转换成字节数组

    byte[] pwdInDb = hexStringToByte(passwordInDb);

    //声明盐变量

    byte[] salt = new byte[SALT_LENGTH];

    //将盐从数据库中保存的口令字节数组中提取出来

    System.arraycopy(pwdInDb, 0, salt, 0, SALT_LENGTH);

    //创建消息摘要对象

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

    //将盐数据传入消息摘要对象

    md.update(salt);

    //将口令的数据传给消息摘要对象

    md.update(password.getBytes("UTF-8"));

    //生成输入口令的消息摘要

    byte[] digest = md.digest();

    //声明一个保存数据库中口令消息摘要的变量

    byte[] digestInDb = new byte[pwdInDb.length - SALT_LENGTH];

    //取得数据库中口令的消息摘要

    System.arraycopy(pwdInDb, SALT_LENGTH, digestInDb, 0, digestInDb.length);

    //比较根据输入口令生成的消息摘要和数据库中消息摘要是否相同

    if (Arrays.equals(digest, digestInDb)) {

    //口令正确返回口令匹配消息

    return true;

    } else {

    //口令不正确返回口令不匹配消息

    return false;

    }

    }

    /**

    * 获得加密后的16进制形式口令

    * @param password

    * @return

    * @throws NoSuchAlgorithmException

    * @throws UnsupportedEncodingException

    */

    public static String getEncryptedPwd(String password)

    throws NoSuchAlgorithmException, UnsupportedEncodingException {

    //声明加密后的口令数组变量

    byte[] pwd = null;

    //随机数生成器

    SecureRandom random = new SecureRandom();

    //声明盐数组变量

    byte[] salt = new byte[SALT_LENGTH];

    //将随机数放入盐变量中

    random.nextBytes(salt);

    //声明消息摘要对象

    MessageDigest md = null;

    //创建消息摘要

    md = MessageDigest.getInstance("MD5");

    //将盐数据传入消息摘要对象

    md.update(salt);

    //将口令的数据传给消息摘要对象

    md.update(password.getBytes("UTF-8"));

    //获得消息摘要的字节数组

    byte[] digest = md.digest();

    //因为要在口令的字节数组中存放盐,所以加上盐的字节长度

    pwd = new byte[digest.length + SALT_LENGTH];

    //将盐的字节拷贝到生成的加密口令字节数组的前12个字节,以便在验证口令时取出盐

    System.arraycopy(salt, 0, pwd, 0, SALT_LENGTH);

    //将消息摘要拷贝到加密口令字节数组从第13个字节开始的字节

    System.arraycopy(digest, 0, pwd, SALT_LENGTH, digest.length);

    //将字节数组格式加密后的口令转化为16进制字符串格式的口令

    return byteToHexString(pwd);

    }

    }

    package com.zyg.security.md5;

    import java.io.UnsupportedEncodingException;

    import java.security.MessageDigest;

    import java.security.NoSuchAlgorithmException;

    import java.security.SecureRandom;

    import java.util.Arrays;

    public class MyMD5Util {

    private static final String HEX_NUMS_STR="0123456789ABCDEF";

    private static final Integer SALT_LENGTH = 12;

    /**

    * 将16进制字符串转换成字节数组

    * @param hex

    * @return

    */

    public static byte[] hexStringToByte(String hex) {

    int len = (hex.length() / 2);

    byte[] result = new byte[len];

    char[] hexChars = hex.toCharArray();

    for (int i = 0; i < len; i++) {

    int pos = i * 2;

    result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4

    | HEX_NUMS_STR.indexOf(hexChars[pos + 1]));

    }

    return result;

    }

    /**

    * 将指定byte数组转换成16进制字符串

    * @param b

    * @return

    */

    public static String byteToHexString(byte[] b) {

    StringBuffer hexString = new StringBuffer();

    for (int i = 0; i < b.length; i++) {

    String hex = Integer.toHexString(b[i] & 0xFF);

    if (hex.length() == 1) {

    hex = '0' + hex;

    }

    hexString.append(hex.toUpperCase());

    }

    return hexString.toString();

    }

    /**

    * 验证口令是否合法

    * @param password

    * @param passwordInDb

    * @return

    * @throws NoSuchAlgorithmException

    * @throws UnsupportedEncodingException

    */

    public static boolean validPassword(String password, String passwordInDb)

    throws NoSuchAlgorithmException, UnsupportedEncodingException {

    //将16进制字符串格式口令转换成字节数组

    byte[] pwdInDb = hexStringToByte(passwordInDb);

    //声明盐变量

    byte[] salt = new byte[SALT_LENGTH];

    //将盐从数据库中保存的口令字节数组中提取出来

    System.arraycopy(pwdInDb, 0, salt, 0, SALT_LENGTH);

    //创建消息摘要对象

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

    //将盐数据传入消息摘要对象

    md.update(salt);

    //将口令的数据传给消息摘要对象

    md.update(password.getBytes("UTF-8"));

    //生成输入口令的消息摘要

    byte[] digest = md.digest();

    //声明一个保存数据库中口令消息摘要的变量

    byte[] digestInDb = new byte[pwdInDb.length - SALT_LENGTH];

    //取得数据库中口令的消息摘要

    System.arraycopy(pwdInDb, SALT_LENGTH, digestInDb, 0, digestInDb.length);

    //比较根据输入口令生成的消息摘要和数据库中消息摘要是否相同

    if (Arrays.equals(digest, digestInDb)) {

    //口令正确返回口令匹配消息

    return true;

    } else {

    //口令不正确返回口令不匹配消息

    return false;

    }

    }

    /**

    * 获得加密后的16进制形式口令

    * @param password

    * @return

    * @throws NoSuchAlgorithmException

    * @throws UnsupportedEncodingException

    */

    public static String getEncryptedPwd(String password)

    throws NoSuchAlgorithmException, UnsupportedEncodingException {

    //声明加密后的口令数组变量

    byte[] pwd = null;

    //随机数生成器

    SecureRandom random = new SecureRandom();

    //声明盐数组变量

    byte[] salt = new byte[SALT_LENGTH];

    //将随机数放入盐变量中

    random.nextBytes(salt);

    //声明消息摘要对象

    MessageDigest md = null;

    //创建消息摘要

    md = MessageDigest.getInstance("MD5");

    //将盐数据传入消息摘要对象

    md.update(salt);

    //将口令的数据传给消息摘要对象

    md.update(password.getBytes("UTF-8"));

    //获得消息摘要的字节数组

    byte[] digest = md.digest();

    //因为要在口令的字节数组中存放盐,所以加上盐的字节长度

    pwd = new byte[digest.length + SALT_LENGTH];

    //将盐的字节拷贝到生成的加密口令字节数组的前12个字节,以便在验证口令时取出盐

    System.arraycopy(salt, 0, pwd, 0, SALT_LENGTH);

    //将消息摘要拷贝到加密口令字节数组从第13个字节开始的字节

    System.arraycopy(digest, 0, pwd, SALT_LENGTH, digest.length);

    //将字节数组格式加密后的口令转化为16进制字符串格式的口令

    return byteToHexString(pwd);

    }

    }

    测试类——Client,代码如下:

    view plaincopy to clipboardprint?

    package com.zyg.security.md5;

    import java.io.UnsupportedEncodingException;

    import java.security.NoSuchAlgorithmException;

    import java.util.HashMap;

    import java.util.Map;

    public class Client {

    private static Map users = new HashMap();

    public static void main(String[] args){

    String userName = "zyg";

    String password = "123";

    registerUser(userName,password);

    userName = "changong";

    password = "456";

    registerUser(userName,password);

    String loginUserId = "zyg";

    String pwd = "1232";

    try {

    if(loginValid(loginUserId,pwd)){

    System.out.println("欢迎登陆!!!");

    }else{

    System.out.println("口令错误,请重新输入!!!");

    }

    } catch (NoSuchAlgorithmException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    /**

    * 注册用户

    *

    * @param userName

    * @param password

    */

    public static void registerUser(String userName,String password){

    String encryptedPwd = null;

    try {

    encryptedPwd = MyMD5Util.getEncryptedPwd(password);

    users.put(userName, encryptedPwd);

    } catch (NoSuchAlgorithmException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    /**

    * 验证登陆

    *

    * @param userName

    * @param password

    * @return

    * @throws UnsupportedEncodingException

    * @throws NoSuchAlgorithmException

    */

    public static boolean loginValid(String userName,String password)

    throws NoSuchAlgorithmException, UnsupportedEncodingException{

    String pwdInDb = (String)users.get(userName);

    if(null!=pwdInDb){ // 该用户存在

    return MyMD5Util.validPassword(password, pwdInDb);

    }else{

    System.out.println("不存在该用户!!!");

    return false;

    }

    }

    }

    展开全文
  • 1 512bits H MD 5 H MD 5 H MD 5 H MD...MD5解密算法-JAVA算法实... 2页 免费 java实现MD5算法 1页 免费 JAVA生成......Java 实现: MD5: MessageDigest md = MessageDigest.getInstance("MD5"); md...加密密钥不同于...

    0 512bit Y0 Y1 Yq Y L ?1 512bits H MD 5 H MD 5 H MD 5 H MD...MD5解密算法-JAVA算法实... 2页 免费 java实现MD5算法 1页 免费 JAVA生成......

    Java 实现: MD5: MessageDigest md = MessageDigest.getInstance("MD5"); md...加密密钥不同于解密密钥,加密密钥公之于众,谁都可以使用;解密密钥只有解密人自己......

    md = MessageDigest.getInstance("SHA"); md....解密 加密/解密 import java.io.*; import java....("DES/ECB/PKCS#5"); //Encrypt or decrypt if......

    JAVA编程题全集(50题及答案)_计算机软件及应用_IT/...n / k; } else k++; } } } 【程序 5】?...input fymd = new input(); do { e = 0; "......

    5 月推出的 Java 面向对象程序设计语 言(以下简称...input fymd = new input(); do { e = 0; System...

    “)d1 加凳 C=io1埘nd1 解密:M ro odn 图1S...(20md; /生成Piltrpnw iItrggm,0,)/ Bgneeqnw...5页 1下载券 使用Java技术实现对称密... 15页 ......

    JAVA超级算法(50题及答案)_IT认证_资格考试/认证_...} } } 【程序 5】 题目:利用条件运算符的嵌套来...input fymd = new input(); do { e = 0; "......

    = ”+sum); } } 5、编写一个 Java 应用程序,...input fymd = new input(); do { e = 0; System...

    input fymd = new input(); do { e = 0; System...5/3,8/5,13/8,21/13...求出这个数列的前 ...()函数 */ import java.util.*; public class ......

    tgl)md ,/-P ②若o, 回步骤① ;t 则返 =l...q生成流 程图 对称密钥用于解密和加密相同的数据...JAVA DSA签名实现 5页 免费 DSA算法 26页 1下载券......

    java===第五章PPT课件_IT认证_资格考试/认证_教育专区。Java 第5章 深入理解Java语言 2021/2/13 程骅 5.1 变量及其传递 ? 5 .1.1 基本类型变量与引用型......

    Java 安全通信概述 1.安全通信介绍 计算机安全通信...; MessageDigest md = MessageDigest.getInstance("...便可使用 A 的数字证书中附带的 A 的公钥解密消息......

    } } } package akjava; import class FenJie { ...例如 2+22+222+2222+22222(此时共有 5 个数...input fymd = new input(); do { e = 0; "......

    } } } package akjava; import class FenJie { ...例如 2+22+222+2222+22222(此时共有 5 个数...input fymd = new input(); do { e = 0; "......

    import java.util.*; public class lianxi04{ ...} } } 【程序 5】 题目:利用条件运算符的嵌套来...input fymd = new input(); do { e = 0; System......

    import java.util.*; public class lianxi04{ ...} } } 【程序5】 题目:利用条件运算符的嵌套来完成...input fymd = new input(); do { e = 0; System......

    JAVA入门练习50题_IT认证_资格考试/认证_教育专区。...} } } 【程序 5】 题目:利用条件运算符的嵌套来...input fymd = new input(); do { e = 0; "......

    } } } 【程序 5】 题目:利用条件运算符的嵌套来...input fymd = new input(); do { e = 0; "...java经典习题集演示教学 50页 免费 Java习题集 15......

    01 ) 在 Java 中, 以下程序编译运行后的输出结果...5; int s = 0; switch (a) { case 5: s ...(选择一项) a) md b) dir c) cd d) ren 33......

    md D. rmdir E. dir 2. 下列命令中可以退出DOS...cd ... 5. 下列用来编译Java文件的命令是: A. ...

    展开全文
  • packageendecrypt;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security..../***采用MD5加密解密*@authortfq*@datetime2011-10-13*/publicclassMD5U...

    packageendecrypt;

    importjava.io.UnsupportedEncodingException;

    importjava.security.MessageDigest;

    importjava.security.NoSuchAlgorithmException;

    /**

    *采用MD5加密解密

    *@authortfq

    *@datetime2011-10-13

    */

    publicclassMD5Util{

    /***

    *MD5加码生成32位md5码

    */

    publicstaticStringstring2MD5(StringinStr){

    MessageDigestmd5=null;

    try{

    md5=MessageDigest.getInstance("MD5");

    }catch(Exceptione){

    System.out.println(e.toString());

    e.printStackTrace();

    return"";

    }

    char[]charArray=inStr.toCharArray();

    byte[]byteArray=newbyte[charArray.length];

    for(inti=0;i

    byteArray[i]=(byte)charArray[i];

    byte[]md5Bytes=md5.digest(byteArray);

    StringBufferhexValue=newStringBuffer();

    for(inti=0;i

    intval=((int)md5Bytes[i])&0xff;

    if(val<16)

    hexValue.append("0");

    hexValue.append(Integer.toHexString(val));

    }

    returnhexValue.toString();

    }

    /**

    *加密解密算法执行一次加密,两次解密

    */

    publicstaticStringconvertMD5(StringinStr){

    char[]a=inStr.toCharArray();

    for(inti=0;i

    a[i]=(char)(a[i]^'t');

    }

    Strings=newString(a);

    returns;

    }

    //测试主函数

    publicstaticvoidmain(Stringargs[]){

    Strings=newString("tangfuqiang");

    System.out.println("原始:"+s);

    System.out.println("MD5后:"+string2MD5(s));

    System.out.println("加密的:"+convertMD5(s));

    System.out.println("解密的:"+convertMD5(convertMD5(s)));

    }

    }

    展开全文
  • Java实现MD5加密以及解密类,附带测试类,具体见代码。MD5加密解密类——MyMD5Util,代码如下package com.zyg.security.md5;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import...
  • Is it possible to recover message from MD5 and Java? [closed]1个可以解密下面的代码吗?下面是我加密String值的方法.如果它是可解密的,请指导我如何做到这一点,根据我的理解MD5算法不能解密,但现在我的工作是...
  • 转载请注明:来自http://blog.csdn.net/M_ChangGong/ 作者:张燕广Java实现MD5加密以及解密类,附带测试类,具体见代码。MD5加密解密类——MyMD5Util,代码如下:package com.zyg.security.md5;import java.io....
  • import java.security.*;import java.security.spec.*;classMD5_test {public final staticString MD5(String s) {char hexDigits[] = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '...
  • md5加密解密1、maven 引入jar包org.apache.commonscommons-lang33.3.22、代码package com.qunar.hadoop.util;import org.apache.commons.codec.digest.DigestUtils;public class MD5 {/*** @param text明文* @param ...
  • 方法一:只加密import java.security.*;...class MD5_test {public final static String MD5(String s) {char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c',...
  • Java实现MD5加密解密

    热门讨论 2011-07-29 11:02:34
    Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。
  • 基础:MessageDigest类的使用其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣:/*** 对字符串md5加密** @param str* @return*/import java.security.MessageDigest;public static ...
  • public class MD5Test {/**** MD5加密 生成32位md5码** @return 返回32位md5码*/public static String md5Encode(String inStr) throws Exception {MessageDigest md5 = null;try {md5 = MessageDigest.getInstance...
  • Java中使用MD5摘要还是很方便的,直接上代码。1 packagecom.cxc.nothing;23 importjava.nio.charset.Charset;4 importjava.security.MessageDigest;56 public classMD5Test {7 public static voidmain(String[] ...
  • MD5消息摘要算法(英语:MD5Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一...就是小编也不知道,通俗一点MD5是一种算法,用于数据的安全方面对数据进行加密和解密,虽然MD5被认为不安全,...
  • 很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto....
  • 首先说明一下系统自带的MD5加密:public final static String MD5(String s) {char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};try {byte[] btInput = s.getBytes();// 获得MD...
  • packagecom.zyg.security.md5;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjava....
  • java md5加密 解密

    2017-08-03 22:10:46
    java md5加密 解密
  • 2014-08-23 回答package endecrypt;import java.io.unsupportedencodingexception;import java.security.messagedigest;import java.security..../*** 采用md5加密解密* @author tfq* @datetime 2011-...
  • java实现md5 加密解密

    热门讨论 2013-08-20 09:58:44
    java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
  • package com.zyg.security.md5;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java....
  • 完整代码:public class MD5Util {public static String getMD5(String str) {try {// 生成一个MD5加密计算摘要MessageDigest md = MessageDigest.getInstance("MD5");// 计算md5函数md.update(str.getBytes());// ...
  • package com.md5;/*** @author 作者 E-mail: chenshaohua2012@126.com* @version 创建时间:2012-11-6 下午3:29:45* 类说明*/import java....public class MD5andKL {// MD5加码。32位public static String MD5(...
  • 基础:MessageDigest类的使用其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣:/*** 对字符串md5加密** @param str* @return*/import java.security.MessageDigest;public static ...
  • 如何在java中实现md5加密和解密关注:273答案:1mip版解决时间 2021-01-19 20:37提问者精神疯裂2021-01-19 05:36如何在java中实现md5加密和解密最佳答案二级知识专家青禾鹭草2021-01-19 06:07package endecrypt;...
  • import java.security.MessageDigest;public class MD5Util {/*** Title: MD5加密 生成32位md5码* Description: TestDemo* @author lu* @date 2016年6月23日 下午2:36:07* @param inStr* @return 返回32位m...
  • javaMD5加密、解密

    2012-08-08 11:22:00
    javaMD5加密、解密

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,732
精华内容 692
关键字:

java解密md5

java 订阅