我有一个特殊的js函数可以将一些表单输入加密到base64中,但我需要在我的Java应用程序中运行它。所以我的问题是,如何在java类中调用该函数?否则我将不得不翻译它,但我认为会更复杂。这是一些js代码:
function encode64(input)
{
//alert(input);
//alert(input);
input = escape(input);
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
var nMod =( input.length) % 3;
//alert(nMod);
//alert(input.length);
do
{
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = (((chr1 << 4) | (chr2 >> 4))& 0x3f);
enc3 = (((chr2 << 2) | (chr3 >> 6))& 0x3f);
enc4 = chr3 & 0x3f;
output = output +
keyStr.charAt(enc1) +
keyStr.charAt(enc2) +
keyStr.charAt(enc3) +
keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
if(nMod == 1)
{
chr1 = input.charCodeAt(i++);
enc1 = ((chr1 & 192)>>2);
enc2 = ((chr1 & 3) <<4);
enc3 = "=";
enc4 = "=";
output = output + keyStr.charAt(enc1)
+ keyStr.charAt(enc2)
+ keyStr.charAt(enc3)
+ keyStr.charAt(enc4);
}
if(nMod == 2)
{
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
enc1 = ((chr1 & 192)>>2);
enc2 = ((chr1 & 3) << 4 )|((chr2 & 0xf0) >> 4);
enc3 = ((chr2 & 15) <<2);
enc4 = "=";
output = output + keyStr.charAt(enc1)
+ keyStr.charAt(enc2)
+ keyStr.charAt(enc3)
+ keyStr.charAt(enc4);
}
return output;
}
非常感谢!
答案 0 :(得分:3)
或者更好地使用commons-codec的Base64 class
P.S。你没有“加密”到Base64 - 你“编码”
答案 1 :(得分:3)
但我觉得会更复杂。
为什么会更复杂?你可以在Java中完美地做到这一点。如果您的实际问题已经是第一行
input = escape(input);
然后很高兴知道Java等价物是URLEncoder#encode()
。至于编码的残余,它最终是直截了当的。只需在var
或String
之后替换char
,根据java.lang.String
API调整方法,就可以了。
编辑:对于一些downvoting nitpickers在这里:我没有说URLEncoder#encode()
执行Base64编码。它只是像Javascript的escape()
函数那样进行URL编码。这只是他要翻译的Javascript代码的第一行。请阅读答案,不要扫描答案。
答案 2 :(得分:1)
你可以使用javascript engine written in Java来做到这一点,但我认为最好将其翻译成java。
答案 3 :(得分:1)
答案 4 :(得分:0)
将代码翻译成Java - 它会更快。 (或者在Java中搜索现有示例!)