国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JAVA與JS在MD5上問題

qylost / 503人閱讀

摘要:問題在做項(xiàng)目時(shí)發(fā)現(xiàn),與對(duì)同一字符串進(jìn)行驗(yàn)簽時(shí)總是不一致解決方案代碼獲得摘要算法的對(duì)象使用指定的字節(jié)更新摘要獲得密文把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式代碼

問題

在做項(xiàng)目時(shí)發(fā)現(xiàn),JS與JAVA對(duì)同一字符串進(jìn)行MD5驗(yàn)簽時(shí)總是不一致

解決方案

1.JAVA代碼

package org.bearfly.test.md5;
  
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
  
public class MD5Utils {
 public static void main(String[] args){
 System.out.println(getMd5String(""));
 System.out.println(MD5("good"));
 }
  
  
 public final static String MD5(String s) {
 char hexDigits[] = { "0", "1", "2", "3", "4",
    "5", "6", "7", "8", "9",
    "A", "B", "C", "D", "E", "F" };
 try {
  byte[] btInput = s.getBytes();
 //獲得MD5摘要算法的 MessageDigest 對(duì)象
  MessageDigest mdInst = MessageDigest.getInstance("MD5");
 //使用指定的字節(jié)更新摘要
  mdInst.update(btInput);
 //獲得密文
  byte[] md = mdInst.digest();
 //把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式
  int j = md.length;
  char str[] = new char[j * 2];
  int k = 0;
  for (int i = 0; i < j; i++) {
  byte byte0 = md[i];
  str[k++] = hexDigits[byte0 >>> 4 & 0xf];
  str[k++] = hexDigits[byte0 & 0xf];
  }
  return new String(str);
 }
 catch (Exception e) {
  e.printStackTrace();
  return null;
 }
 }
  
  
  
 public static String getMd5String(String str){
 MessageDigest messageDigest = null; 
   
 try { 
  messageDigest = MessageDigest.getInstance("MD5"); 
  
  messageDigest.reset(); 
  
  messageDigest.update(str.getBytes("UTF-8")); 
 } catch (NoSuchAlgorithmException e) { 
  System.out.println("NoSuchAlgorithmException caught!"); 
  System.exit(-1); 
 } catch (UnsupportedEncodingException e) { 
  e.printStackTrace(); 
 } 
  
 byte[] byteArray = messageDigest.digest(); 
  
 StringBuffer md5StrBuff = new StringBuffer(); 
  
 for (int i = 0; i < byteArray.length; i++) {  
  if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) 
  md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i])); 
  else
  md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); 
 } 
  
 return md5StrBuff.toString(); 
 }
}

js代碼:

var MD5 = function (string) { 
 
function RotateLeft(lValue, iShiftBits) { 
 return (lValue<>>(32-iShiftBits)); 
} 
 
function AddUnsigned(lX,lY) { 
 var lX4,lY4,lX8,lY8,lResult; 
 lX8 = (lX & 0x80000000); 
 lY8 = (lY & 0x80000000); 
 lX4 = (lX & 0x40000000); 
 lY4 = (lY & 0x40000000); 
 lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); 
 if (lX4 & lY4) { 
 return (lResult ^ 0x80000000 ^ lX8 ^ lY8); 
 } 
 if (lX4 | lY4) { 
 if (lResult & 0x40000000) { 
  return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); 
 } else { 
  return (lResult ^ 0x40000000 ^ lX8 ^ lY8); 
 } 
 } else { 
 return (lResult ^ lX8 ^ lY8); 
 } 
} 
 
function F(x,y,z) { return (x & y) | ((~x) & z); } 
function G(x,y,z) { return (x & z) | (y & (~z)); } 
function H(x,y,z) { return (x ^ y ^ z); } 
function I(x,y,z) { return (y ^ (x | (~z))); } 
 
function FF(a,b,c,d,x,s,ac) { 
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); 
 return AddUnsigned(RotateLeft(a, s), b); 
}; 
 
function GG(a,b,c,d,x,s,ac) { 
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); 
 return AddUnsigned(RotateLeft(a, s), b); 
}; 
 
function HH(a,b,c,d,x,s,ac) { 
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); 
 return AddUnsigned(RotateLeft(a, s), b); 
}; 
 
function II(a,b,c,d,x,s,ac) { 
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); 
 return AddUnsigned(RotateLeft(a, s), b); 
}; 
 
function ConvertToWordArray(string) { 
 var lWordCount; 
 var lMessageLength = string.length; 
 var lNumberOfWords_temp1=lMessageLength + 8; 
 var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; 
 var lNumberOfWords = (lNumberOfWords_temp2+1)*16; 
 var lWordArray=Array(lNumberOfWords-1); 
 var lBytePosition = 0; 
 var lByteCount = 0; 
 while ( lByteCount < lMessageLength ) { 
 lWordCount = (lByteCount-(lByteCount % 4))/4; 
 lBytePosition = (lByteCount % 4)*8; 
 lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<>>29; 
 return lWordArray; 
}; 
 
function WordToHex(lValue) { 
 var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; 
 for (lCount = 0;lCount<=3;lCount++) { 
 lByte = (lValue>>>(lCount*8)) & 255; 
 WordToHexValue_temp = "0" + lByte.toString(16); 
 WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); 
 } 
 return WordToHexValue; 
}; 
 
function Utf8Encode(string) { 
 string = string.replace(/
/g,"
"); 
 var utftext = ""; 
 
 for (var n = 0; n < string.length; n++) { 
 
 var c = string.charCodeAt(n); 
 
 if (c < 128) { 
  utftext += String.fromCharCode(c); 
 } 
 else if((c > 127) && (c < 2048)) { 
  utftext += String.fromCharCode((c >> 6) | 192); 
  utftext += String.fromCharCode((c & 63) | 128); 
 } 
 else { 
  utftext += String.fromCharCode((c >> 12) | 224); 
  utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
  utftext += String.fromCharCode((c & 63) | 128); 
 } 
 
 } 
 
 return utftext; 
}; 
 
var x=Array(); 
var k,AA,BB,CC,DD,a,b,c,d; 
var S11=7, S12=12, S13=17, S14=22; 
var S21=5, S22=9 , S23=14, S24=20; 
var S31=4, S32=11, S33=16, S34=23; 
var S41=6, S42=10, S43=15, S44=21; 
 
string = Utf8Encode(string); 
 
x = ConvertToWordArray(string); 
 
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; 
 
for (k=0;k           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87809.html

相關(guān)文章

  • JAVAJSMD5問題

    摘要:問題在做項(xiàng)目時(shí)發(fā)現(xiàn),與對(duì)同一字符串進(jìn)行驗(yàn)簽時(shí)總是不一致解決方案代碼獲得摘要算法的對(duì)象使用指定的字節(jié)更新摘要獲得密文把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式代碼 問題 在做項(xiàng)目時(shí)發(fā)現(xiàn),JS與JAVA對(duì)同一字符串進(jìn)行MD5驗(yàn)簽時(shí)總是不一致 解決方案 1.JAVA代碼 package org.bearfly.test.md5; import java.io.UnsupportedEncodin...

    KunMinX 評(píng)論0 收藏0
  • 關(guān)于BBS的一些功能性補(bǔ)充以及踩坑記錄(持續(xù)補(bǔ)充)

    摘要:聲明以下記錄了本人實(shí)驗(yàn)性地探索過程,不代表正確,請(qǐng)謹(jǐn)慎食用。取消注釋,并添加兩個(gè)屬性,。由于在中被設(shè)置成了的,所以并不適合加密存入。算法碰撞的可能性很小,因此基本可以保證和加密后都是獨(dú)一無二的,防止黑客用彩虹表爆表。 聲明:以下記錄了本人實(shí)驗(yàn)性地探索過程,不代表正確,請(qǐng)謹(jǐn)慎食用。也歡迎提出各種批評(píng)建議,幫助我改正錯(cuò)誤。謝謝! 1.注冊(cè) 注冊(cè)時(shí)在注冊(cè)的jsp頁面使用js函數(shù)進(jìn)行合法性驗(yàn)證...

    hightopo 評(píng)論0 收藏0
  • 文件下載時(shí)前后臺(tái)MD5校驗(yàn)

    摘要:背景在項(xiàng)目中發(fā)現(xiàn),文件下載時(shí)有可能出現(xiàn)文件不完全導(dǎo)致的文件無法打開的情況,考慮在后臺(tái)響應(yīng)中加入文件,與前臺(tái)取得文件后生成的值作一次校驗(yàn),來判斷文件是否正確下載。 背景 在項(xiàng)目中發(fā)現(xiàn),文件下載時(shí)有可能出現(xiàn)文件不完全導(dǎo)致的文件無法打開的情況,考慮在后臺(tái)響應(yīng)中加入文件MD5,與前臺(tái)取得文件后生成的MD5值作一次校驗(yàn),來判斷文件是否正確下載。 問題 此功能的難點(diǎn)是如何在response中加入M...

    mingde 評(píng)論0 收藏0
  • 文件下載時(shí)前后臺(tái)MD5校驗(yàn)

    摘要:背景在項(xiàng)目中發(fā)現(xiàn),文件下載時(shí)有可能出現(xiàn)文件不完全導(dǎo)致的文件無法打開的情況,考慮在后臺(tái)響應(yīng)中加入文件,與前臺(tái)取得文件后生成的值作一次校驗(yàn),來判斷文件是否正確下載。 背景 在項(xiàng)目中發(fā)現(xiàn),文件下載時(shí)有可能出現(xiàn)文件不完全導(dǎo)致的文件無法打開的情況,考慮在后臺(tái)響應(yīng)中加入文件MD5,與前臺(tái)取得文件后生成的MD5值作一次校驗(yàn),來判斷文件是否正確下載。 問題 此功能的難點(diǎn)是如何在response中加入M...

    Object 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<