首先引用这个命名空间
目前成都创新互联已为近千家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、康巴什网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
using System.Security.Cryptography;
//建立SHA1对象
SHA1 sha = new SHA1CryptoServiceProvider();
//将mystr转换成byte[]
ASCIIEncoding enc = new ASCIIEncoding();
byte[] dataToHash = enc.GetBytes(mystr);
//Hash运算
byte[] dataHashed = SHA1.ComputeHash(dataToHash );
//将运算结果转换成string
string hash = BitConverter.ToString(dataHashed).Replace("-", "");
return hash;
简单的做法是
1、使用apache的codec jar包对string进行加密,先下载并引入jar包:
2、生成:
String sign = DigestUtils.shaHex(str);
3.也可以使用工具在线进行sha加密,参考 hash值(md5, sha1, sha256, sha512,crc32) 在线计算,。望采纳,谢谢。
public class Sha1 {
/**
* SHA1 安全加密算法
* @param maps 参数key-value map集合
* @return
* @throws DigestException
*/
public static String SHA1(MapString,Object maps) throws DigestException {
//获取信息摘要 - 参数字典排序后字符串
String decrypt = getOrderByLexicographic(maps);
try {
//指定sha1算法
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.update(decrypt.getBytes());
//获取字节数组
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] 0xFF);
if (shaHex.length() 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString().toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new DigestException("签名错误!");
}
}
/**
* 获取参数的字典排序
* @param maps 参数key-value map集合
* @return String 排序后的字符串
*/
private static String getOrderByLexicographic(MapString,Object maps){
return splitParams(lexicographicOrder(getParamsName(maps)),maps);
}
/**
* 获取参数名称 key
* @param maps 参数key-value map集合
* @return
*/
private static ListString getParamsName(MapString,Object maps){
ListString paramNames = new ArrayListString();
for(Map.EntryString,Object entry : maps.entrySet()){
paramNames.add(entry.getKey());
}
return paramNames;
}
/**
* 参数名称按字典排序
* @param paramNames 参数名称List集合
* @return 排序后的参数名称List集合
*/
private static ListString lexicographicOrder(ListString paramNames){
Collections.sort(paramNames);
return paramNames;
}
/**
* 拼接排序好的参数名称和参数值
* @param paramNames 排序后的参数名称集合
* @param maps 参数key-value map集合
* @return String 拼接后的字符串
*/
private static String splitParams(ListString paramNames,MapString,Object maps){
StringBuilder paramStr = new StringBuilder();
for(String paramName : paramNames){
paramStr.append(paramName);
for(Map.EntryString,Object entry : maps.entrySet()){
if(paramName.equals(entry.getKey())){
paramStr.append(String.valueOf(entry.getValue()));
}
}
}
return paramStr.toString();
}
private static string SHA1(string text)
{
byte[] cleanBytes = Encoding.Default.GetBytes(text);
byte[] hashedBytes = System.Security.Cryptography.SHA1.Create().ComputeHash(cleanBytes);
return BitConverter.ToString(hashedBytes).Replace("-", "");
}
调用这个函数就可以得到你要的sha1值了。
另外还有个概念要澄清,SHA1是散列算法,不是加密。