导航:首页 > 编程语言 > sha1算法java

sha1算法java

发布时间:2025-02-12 03:11:59

㈠ 用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();
}

㈡ 如何使用java进行sha1加密

使用下面的语句即可:
digestutils.shahex(要加密的字符);加密参数最好用字节数组,毕竟sha1算法是使用字节为单位进行运算的,字符串转字节还与字符编码有关。

php 如何实现 java的sha1加密

function encryptTokey($data){
$apikey = 'testapikey111';
$ps1 = sha1($apikey . strtolower($data));
$ps1 = strtoupper($ps1);
$s1 = implode(str_split($ps1, 2), '-');
$ps2 = md5($s1 . $apikey);
$ps2 = strtoupper($ps2);
$token = implode(str_split($ps2, 2), '-');
return $token;
}
echo encryptTokey('testdata');

运行结果:
68-10-98-74-4C-82-74-4B-CC-49-31-98-46-02-EE-8E

详细你可以去后盾人看看,这些都是后盾人里面的,哪里有详细的视频教学都是高质量,我自己就是在里面学的。

㈣ java 怎样实现 64位的md5加密算法

直接引入“commons-codec-1.10.jar”这个java包,然后调用相应方法即可

比如我们可以写一个方法类,把常用的方法都写进去:

publicclassEncryptionUtil{
/**
*Base64encode
**/
(Stringdata){
returnBase64.encodeBase64String(data.getBytes());
}

/**
*Base64decode
*@
**/
(Stringdata){
returnnewString(Base64.decodeBase64(data.getBytes()),"utf-8");
}

/**
*md5
**/
publicstaticStringmd5Hex(Stringdata){
returnDigestUtils.md5Hex(data);
}

/**
*sha1
**/
publicstaticStringsha1Hex(Stringdata){
returnDigestUtils.sha1Hex(data);
}

/**
*sha256
**/
publicstaticStringsha256Hex(Stringdata){
returnDigestUtils.sha256Hex(data);
}

}


(PS:纯手打,望采纳)

㈤ 如何生成HMAC在Java中相当于一个Python的例子吗

1. HMACSHA1似乎是你所需要的算法:SecretKeySpec keySpec = new SecretKeySpec(
"".getBytes(),
"HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(keySpec);
byte[] result = mac.doFinal("foo".getBytes());
BASE64Encoder encoder = new BASE64Encoder();
System.out.println(encoder.encode(result));

生产:+3h2gpjf4xcynjCGU5lbdMBwGOc=

请注意,我sun.misc.BASE64Encoder为迅速在这里,但你应该不依赖于太阳的JRE。以base64编码器在下议院编解码器将是一个更好的选择,例如。
2. A小调的事情,但如果你正在寻找一个相当于HMAC(那么默认的Python库的MD5算法,所以你需要的HMACMD5算法在Java中。 这个我有这个确切的问题,并认为此答案这是有帮助的 CodeGo.net,但我错过了一个地方传递到HMAC()的一部分,并就下一个兔子洞。希望这个答案可以防止其他人做的未来。 例如在Python REPL>>> import hmac
>>> hmac.new("keyValueGoesHere", "secretMessageToHash").hexdigest()
''

这等效于import org.apache.commons.codec.binary.Hex;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class HashingUtility {
public static String HMAC_MD5_encode(String key, String message) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(
key.getBytes(),
"HmacMD5");
Mac mac = Mac.getInstance("HmacMD5");
mac.init(keySpec);
byte[] rawHmac = mac.doFinal(message.getBytes());
return Hex.encodeHexString(rawHmac);
}
}

请注意,在我的例子我在干什么。hexdigest相当于()

㈥ java如何快速比较两个文件是否相同

计算MD5或SHA-1,一样的就是同一个文件

下面的代码,不需要额外使用第三方组件,且支持超大文件

//计算文件的MD5值
publicstaticStringgetFileMD5(Filefile){
if(!file.isFile()){
returnnull;
}
MessageDigestdigest=null;
FileInputStreamin=null;
bytebuffer[]=newbyte[8192];
intlen;
try{
digest=MessageDigest.getInstance("MD5");
in=newFileInputStream(file);
while((len=in.read(buffer))!=-1){
digest.update(buffer,0,len);
}
BigIntegerbigInt=newBigInteger(1,digest.digest());
returnbigInt.toString(16);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}finally{
try{
in.close();
}catch(Exceptione){
e.printStackTrace();
}
}

}


//计算文件的SHA-1值
publicstaticStringgetFileSha1(Filefile){
if(!file.isFile()){
returnnull;
}
MessageDigestdigest=null;
FileInputStreamin=null;
bytebuffer[]=newbyte[8192];
intlen;
try{
digest=MessageDigest.getInstance("SHA-1");
in=newFileInputStream(file);
while((len=in.read(buffer))!=-1){
digest.update(buffer,0,len);
}
BigIntegerbigInt=newBigInteger(1,digest.digest());
returnbigInt.toString(16);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}finally{
try{
in.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}

㈦ java 密码加密之后想解密可是不会!!!

PasswordHash.ALGORITHM_SHA。。是 SHA 加密方式,目前世界上还没有SHA的解密算法,也就是说,这种加密方式,是单向加密,一旦加密,就无法破解!
能用的方法就是,将输入的密码也通过SHA加密,然后比对加密后的字符串。
如果忘记密码,只有通过SQL语句来修改数据库里保存的加密后字符串了。mysql数据库时,可以使用 password=sha1(密码) 方式把密码设置进去,用户登录直接输入 密码 即可。

阅读全文

与sha1算法java相关的资料

热点内容
程序员入驻平台 浏览:321
程序员大战外挂 浏览:737
html实例教程pdf 浏览:155
linux命令开放所有权限 浏览:573
30岁能学会编程 浏览:735
小火箭的服务器是什么 浏览:967
cad查信息命令 浏览:402
XP禁止新建文件夹 浏览:394
程序员的悲惨生活 浏览:207
什么找房app比较好用 浏览:202
手机视频剪辑压缩 浏览:320
中华软件库源码资源共享 浏览:69
极云普惠没有合适的前端服务器 浏览:173
服务器空白处怎么办 浏览:677
stm单片机控制机械臂 浏览:192
施工方案整理到文件夹叫什么名 浏览:958
霍夫曼编码算法 浏览:544
生成解决方案等于编译加链接吗 浏览:22
俄罗斯加密货币计划 浏览:826
linuxonarm 浏览:737