sha1加密
① 什么是SHA1加密技术
Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法。主要用于文件身份识别、数字签名和口令加密等。 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B。且明文信息A和识别码B之间同时满足以下条件: 1、对于任意两条不同的明文信息A1、A2,其识别码B1、B2都不相同。 2、无法通过逆向算法由识别码B倒推出明文信息A。 MOONCRM的用户密码采用SHA1加密存储,即服务器上存储的只是 由用户密码生成的识别码,而用户密码本身并没有存储在服务器上。用户输入登陆口令时,系统会根据输入口令生成相应识别码并与系统中所存储的识别码进行比较,如二者一致,则认为口令正确。系统中没有存储用户原始的口令值,即使有人获得口令文件,也无法破解用户登陆密码,确保用户密码绝对安全。 在ASP.NET中,可以通过以下命令来加密密码字符串: //passwordString是密码字符串 System.Web.Security.FormsAuthentication. (passwordString, "SHA1"); 这样就可以和系统中所存储的识别码进行比较了! --------北大青鸟西安华美---------
② 接口进行sha1加密是什么意思
sha1是一种常用的加密函数。
你可以查询你所使用的编程语言的手册去找sha1函数去处理数据然后将处理过的数据发送到接口即可。
没种语言的sha1函数名不一样。例如php的sha1函数名就交sha1()
③ sha1是不是可以生成密钥 然后用aes算法加密 求没有那个大虾能帮我解决一下
是可以这么做的,而且这个也是一个比较通用的做法。sha1的结果是16byte(128位)的,aes的时候你采用128的加密cbc模式就好了。SHA1的话,你只需要一个输入就可以了,不需要其他的向量。
④ java的sha1加密和object-c的sha1加密后的值不一样,谁能帮我解决一下。多谢了
结果是一样的, 但是你多搞了一点: java你是用Base64编码成字符串, 而ObjC你是直接用16进制输出的, 你java上不Base64编码, 也输出成16进制, 就一样了;
⑤ 请问SHA1加密算法也是不可逆的吗
是的,同MD5一样都是不可逆的加密算法。
安全性的碰撞对比:
MD5为2^64,sha1为2^60。这么你可能不理解,通俗的讲就是每2^64个样本中能找到两个MD5相同的值,sha1类似。但这只是理论,从实际样本取样的情况,要比这个值小很多。
现在的MD5和sha1加密都用暴力破解,就算拿不到你的原始串,也是很容易被取出来的。
⑥ 加密算法md5和sha1是得到加密结果后是不可以解密的。那有没有可以解密的
请搜索RSA,DES算法
⑦ MD5,sha1,sha256分别输出多少位啊
MD5输出128位、SHA1输出160位、SHA256输出256位。
1、MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
2、SHA1安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。
3、sha256哈希值用作表示大量数据的固定大小的唯一值。数据的少量更改会在哈希值中产生不可预知的大量更改。SHA256 算法的哈希值大小为 256 位。
(7)sha1加密扩展阅读:
MD5应用:
1、一致性验证
MD5的典型应用是对一段信息产生信息摘要,以防止被篡改。具体来说文件的MD5值就像是这个文件的“数字指纹”。每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。
比如下载服务器针对一个文件预先提供一个MD5值,用户下载完该文件后,用我这个算法重新计算下载文件的MD5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。
2、数字签名
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。
例子:将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后可以传播这个文件给,如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。
如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
3、安全访问认证
MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面。如在Unix系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。
当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。
即使暴露源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
⑧ 用java程序进行sha1加密,怎么弄
publicclassSha1{
/**
*SHA1安全加密算法
*@parammaps参数key-valuemap集合
*@return
*@throwsDigestException
*/
publicstaticStringSHA1(Map<String,Object>maps)throwsDigestException{
//获取信息摘要-参数字典排序后字符串
Stringdecrypt=getOrderByLexicographic(maps);
try{
//指定sha1算法
MessageDigestdigest=MessageDigest.getInstance("SHA-1");
digest.update(decrypt.getBytes());
//获取字节数组
bytemessageDigest[]=digest.digest();
//CreateHexString
StringBufferhexString=newStringBuffer();
//字节数组转换为十六进制数
for(inti=0;i<messageDigest.length;i++){
StringshaHex=Integer.toHexString(messageDigest[i]&0xFF);
if(shaHex.length()<2){
hexString.append(0);
}
hexString.append(shaHex);
}
returnhexString.toString().toUpperCase();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
thrownewDigestException("签名错误!");
}
}
/**
*获取参数的字典排序
*@parammaps参数key-valuemap集合
*@returnString排序后的字符串
*/
(Map<String,Object>maps){
returnsplitParams(lexicographicOrder(getParamsName(maps)),maps);
}
/**
*获取参数名称key
*@parammaps参数key-valuemap集合
*@return
*/
privatestaticList<String>getParamsName(Map<String,Object>maps){
List<String>paramNames=newArrayList<String>();
for(Map.Entry<String,Object>entry:maps.entrySet()){
paramNames.add(entry.getKey());
}
returnparamNames;
}
/**
*参数名称按字典排序
*@paramparamNames参数名称List集合
*@return排序后的参数名称List集合
*/
privatestaticList<String>lexicographicOrder(List<String>paramNames){
Collections.sort(paramNames);
returnparamNames;
}
/**
*拼接排序好的参数名称和参数值
*@paramparamNames排序后的参数名称集合
*@parammaps参数key-valuemap集合
*@returnString拼接后的字符串
*/
(List<String>paramNames,Map<String,Object>maps){
StringBuilderparamStr=newStringBuilder();
for(StringparamName:paramNames){
paramStr.append(paramName);
for(Map.Entry<String,Object>entry:maps.entrySet()){
if(paramName.equals(entry.getKey())){
paramStr.append(String.valueOf(entry.getValue()));
}
}
}
returnparamStr.toString();
}
⑨ .net 中的sha1加密
我用的是微软的企业库
引用using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
///<summary> Copyright (C) 2008 公司 版权所有。
/// 文件名:CommonCryptography.cs
/// 方法功能描述: 公共方法库->加密数据
/// 创建标识 2008-7-26
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string EncryptData(string data)
{
if (string.IsNullOrEmpty(data))
return null;
string encryptedData;
try
{
encryptedData = Cryptographer.EncryptSymmetric(SYMMMANAGE, data);
}
catch (Exception ex)
{
throw ex;
}
return encryptedData;
}
建议你封装成你自己 的类,用起来方便..不管CS还是BS均可以用
⑩ 如何使用java进行sha1加密
简单的做法是
1、使用apache的codec jar包对string进行加密,先下载并引入jar包:http://commons.apache.org/proper/commons-codec/
2、生成:
String sign = DigestUtils.shaHex(str);
3.也可以使用工具在线进行sha加密,参考 hash值(md5, sha1, sha256, sha512,crc32) 在线计算,http://www.it399.com/m/FileHash。望采纳,谢谢。