C#,Java,MD5加密对等实现

1.c#实现

    /*    *加密生成MD5    */     public static String MD5(string s)
        {
            char[] hexDigits = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ };
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(s);
            byte[] result = md5.ComputeHash(inputBytes);
            int j = result.Length;
            char[] str = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++)
            {
                byte byte0 = result[i];
                str[k++] = hexDigits[byte0 >> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } 

2.Java实现

public final class DefaultPasswordEncoder {

    private static final char[] HEX_DIGITS = {‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘,
                                                ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘};

    private final String encodingAlgorithm="MD5";

    private final String characterEncoding="UTF-8";

    /*    *加密生成MD5    */
    public String encode(final String password) {
        if (password == null) {
            return null;
        }

        try {
            MessageDigest messageDigest = MessageDigest
                .getInstance(this.encodingAlgorithm);

            if (StringUtils.hasText(this.characterEncoding)) {
                messageDigest.update(password.getBytes(this.characterEncoding));
            } else {
                messageDigest.update(password.getBytes());
            }

            final byte[] digest = messageDigest.digest();

            return getFormattedText(digest);
        } catch (final NoSuchAlgorithmException e) {
            throw new SecurityException(e);
        } catch (final UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Takes the raw bytes from the digest and formats them correct.
     *
     * @param bytes the raw bytes from the digest.
     * @return the formatted bytes.
     */
    private String getFormattedText(final byte[] bytes) {
        final StringBuilder buf = new StringBuilder(bytes.length * 2);

        for (int j = 0; j < bytes.length; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }

}

原文地址:https://www.cnblogs.com/oumi/p/9161507.html

时间: 2024-11-15 12:06:21

C#,Java,MD5加密对等实现的相关文章

js和java MD5加密

项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other co

Java: md5 加密中文 &amp; 注意编码

今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解. 后面网上搜索了一下,才知道是[编码]的问题. 以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下,md5加密结果不一样. 我没想到java也有类似的问题,不过解决办法倒很简单: 原来的代码: 1 alg.update(txt.getBytes(encoding)); 只需修改为: 1 2 3 4 5 6 7 8 try         {             alg.update(txt.g

java MD5加密

今天在写注册登录的时候想起来为密码做一个加密,于是去网上搜索用哪方面的技术,最后确定了java自带的MD5单向加密,这个好处就是加密以后是无法解密的,有利于数据的安全,代码比较少,但是需要认真理解为什么要这样写,我先把代码贴出来. 我是需要把密码加密成一个32位的字符串 public class MD5 { public static String getHash(String password) throws NoSuchAlgorithmException { ///获取MD5算法实例 得到

Java md5加密 控制台传入与web传入参数 结果不匹配 || 相同字符串加密结果不同

开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD5(String originString) { if (originString != null) { try { // 创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节数组对摘

Java MD5加密与RSA加密

区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私钥进行解密,解密出原字符串进行比较是否一致 个人观点: RSA加密略比MD5加密牛逼一点点 但凡事都有好坏    MD5加密执行效率比RSA慢 废话不多说上栗子: MD5加密: package cn.news.util; import java.security.MessageDigest; /**

java MD5加密工具类

1 import java.math.BigInteger; 2 import java.security.MessageDigest; 3 import java.security.NoSuchAlgorithmException; 4 5 public class MD5Utils { 6 /** 7 * 使用md5的算法进行加密 8 */ 9 public static String md5(String plainText) { 10 byte[] secretBytes = null;

C# java MD5加密方不一致问题

说来惭愧,做开发几年了,一直在吸取,今天也写写自已关于技术的一点点理解,不正之处,请大家多多指点. 由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式,而现在需要切换到Java平台下,关键问题是如何将用户信息通过Java方式的MD5加密码到与C#同样的结果. 经过查询资料与测试,Java与C#默认的MD5加密结果是一致的,主要是编码问题. 测试一: C#代码  默认编码加密 1 class Program 2 { 3 static void Main(string[] args

Java MD5加密类

1 /************************************************* 2 md5 类实现了RSA Data Security, Inc.在提交给IETF 3 的RFC1321中的MD5 message-digest 算法. 4 *************************************************/ 5 public class MD5 { 6 /* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define

Java MD5 加密

MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); return ""; } byte[] by = str.getBytes(); byte[] md5Bytes = md5.digest(by); StringBuf