C#,Java,MD5加密对等实现
2024-10-20 08:24:42
1.c#实现
/*
*加密生成MD5
*/
public static String MD5(string s)
{
char[] hexDigits = { '', '', '', '', '', '', '', '', '', '', 'a', 'b', 'c', 'd', 'e', 'f' };
MD5 md5 = new MD5CryptoServiceProvider();
byte[] inputBytes = System.Text.Encoding.Default.GetBytes(s);
byte[] result = md5.ComputeHash(inputBytes);
int j = result.Length;
char[] str = new char[j * ];
int k = ;
for (int i = ; i < j; i++)
{
byte byte0 = result[i];
str[k++] = hexDigits[byte0 >> & 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();
} }
最新文章
- css单位:em,rem解释
- 地理围栏算法解析(Geo-fencing)
- Oracle中创建视图
- UVA 11294 Wedding(2-sat)
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
- Java [leetcode 34]Search for a Range
- tp28xx port pin (open-drain )and (push-pull) 和open collector)
- 路过Haxe
- maven工程莫名其妙只在项目名称那里有一个红叉
- 【开发技术】json
- 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法
- Task 的用法
- SQL SERVER 死锁
- Mysql 中的MVCC原理,undo日志的依赖
- cocos2dx 屏幕分辨率
- 【转】Python-面向对象进阶
- socket之基础
- android开发(34) 自定义 listView的分割线( 使用xml drawable画多条线)
- redis -clock_gettime问题
- 网络I/O模型--03非阻塞模式(ServerSocket与Socket的超时处理)--解除accept()、 read()方法阻塞