第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在線等,挺急的!JAVA BASE64 HMACSHA512加密

在線等,挺急的!JAVA BASE64 HMACSHA512加密

蕪湖不蕪 2019-10-10 18:00:43
需求是會(huì)員從C#遷移到了JAVA,但是舊的密碼是BASE64(HMACSHA512(value))加密的,用戶體驗(yàn)不變,所以java端也要實(shí)現(xiàn)這個(gè),可我生成的這么都不對(duì)。c#:PBKDF2C#生成的類似:zYKcuNTKMZzvmCptYkXbbfCXkwUiQKf/6qZi/XRNNxSf08pMRcrBO34cj9DMyoQCFOLnbQgDz9aalz8yjbQwng==而我生成的:YjA4OTc2ZDJkNmNhYTk4OGJmODI0M2M1OWExZTJjYjMwMmMzNzFmYzA0ZTA2ZTE0ZjkyNGQyNWNiNGI2MTA1ZDc1YTUzNTJjZjI1YjY4ODlhY2JhMTk2M2MwNzcyODE4MjQzZmY3YzczZjMzY2I2OWEyMGIyM2ZkYmNiOTAwOGY=哪有問題?下面是代碼importjavax.crypto.spec.SecretKeySpec;importjavax.crypto.Mac;importjava.util.Base64;publicclassHMAC{/***定義加密方式*MAC算法可選以下多種算法**HmacMD5*HmacSHA1*HmacSHA256*HmacSHA384*HmacSHA512**/privatestaticfinalStringHMAC_SHA1="HmacSHA512";/***生成簽名數(shù)據(jù)_HmacSHA1加密**@paramdata*待加密的數(shù)據(jù)*@paramkey*加密使用的key*/publicstaticStringgetSignature(Stringdata,Stringkey)throwsException{byte[]keyBytes=key.getBytes();//根據(jù)給定的字節(jié)數(shù)組構(gòu)造一個(gè)密鑰。SecretKeySpecsigningKey=newSecretKeySpec(keyBytes,HMAC_SHA1);Macmac=Mac.getInstance(HMAC_SHA1);mac.init(signingKey);byte[]rawHmac=mac.doFinal(data.getBytes());StringhexBytes=byte2hex(rawHmac);returnhexBytes;}privatestaticStringbyte2hex(finalbyte[]b){Stringhs="";Stringstmp="";for(intn=0;n
查看完整描述

2 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

直接對(duì)簽名算法生成的字節(jié)數(shù)組做base64編碼,不要先轉(zhuǎn)成HAXstring。
base64和轉(zhuǎn)成hex都是將字節(jié)序列轉(zhuǎn)成可以閱讀的字符形式,一般在設(shè)計(jì)上不會(huì)同時(shí)使用,同時(shí)使用的話只會(huì)徒增結(jié)果長(zhǎng)度,對(duì)安全性提升意義不大。
hmac是簽名算法,作為開發(fā)者建議分清編碼、摘要/哈希/雜湊、簽名以及加密的區(qū)別
publicstaticbyte[]getSignature(Stringdata,Stringkey)throwsException{
byte[]keyBytes=key.getBytes();
//根據(jù)給定的字節(jié)數(shù)組構(gòu)造一個(gè)密鑰。
SecretKeySpecsigningKey=newSecretKeySpec(keyBytes,HMAC_SHA1);
Macmac=Mac.getInstance(HMAC_SHA1);
mac.init(signingKey);
returnmac.doFinal(data.getBytes());
}
publicstaticvoidmain(String[]args){
try{
finalbyte[]signature1=getSignature("3e043a92a204412cb7098b67c017b1cf","ants@xpress");
Stringbase64String=Base64.getEncoder().encodeToString(signature1);
System.out.println(base64String);
}catch(Exceptione){
e.printStackTrace();
}
}
                            
查看完整回答
反對(duì) 回復(fù) 2019-10-10
?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

你確定是BASE64(HMACSHA512(value))還是PBKDF2-HMACSHA512,這是兩種完全不同的加密方式。后者的話你還需要dkLen、c和salt才能得到相同的結(jié)果。
                            
查看完整回答
反對(duì) 回復(fù) 2019-10-10
  • 2 回答
  • 0 關(guān)注
  • 394 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)