我有困難,可以在javascript相同的字符串,我認爲我做錯了什麼......的Java與JavaScript(加密相關)
Java代碼:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.GregorianCalendar;
import sun.misc.BASE64Encoder;
private static String getBase64Code(String input) throws
UnsupportedEncodingException, NoSuchAlgorithmException {
String base64 = "";
byte[] txt = input.getBytes("UTF8");
byte[] text = new byte[txt.length+3];
text[0] = (byte)239;
text[1] = (byte)187;
text[2] = (byte)191;
for(int i=0; i<txt.length; i++)
text[i+3] = txt[i];
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(text);
byte digest[] = md.digest();
BASE64Encoder encoder = new BASE64Encoder();
base64 = encoder.encode(digest);
return base64;
}
我想這個使用Paul's MD5 script以及Farhadi Base 64 Encode script
,但我的測試中完全失敗:(
我的代碼:
function CalculateCredentialsSecret(type, user, pwd) {
var days = days_between(new Date(), new Date(2000, 1, 1));
var str = type.toUpperCase() + user.toUpperCase() + pwd.toUpperCase() + days;
var padding_data = String.fromCharCode(239) +
String.fromCharCode(187) +
String.fromCharCode(191);
var md5 = hex_md5(padding_data + str);
var b64 = base64Encode(md5);
return encodeURIComponent(b64);
}
有誰知道我該如何將這個轉換成Java的方法?
謝謝
測試(今日(29-09-2010),3740天 1月1日以後,2000年)
var secret = CalculateCredentialsSecret('AAA', 'BBB', 'CCC');
// secret SHOULD be: S3GYAfGWlmrhuoNsIJF94w==
(1)在JavaScript沒有類型字節 (2)的那些3線是3個字節值添加到字符串進行加密/編碼。 – balexandre 2010-03-29 10:22:55
我想傳輸數據,但是我想先對傳遞的字符串應用MD5加密 – balexandre 2010-03-29 10:23:44
@balexandre我知道他們在做什麼,我只是不知道如何做JS中的等價物。 – thecoshman 2010-03-29 10:27:00