javascript - 如何将此代码在javascript中转换为java
问题描述
我在 javascript 中有这段代码,我需要将其转换为 java,但我不是 javascript 专家。
这里的代码:
function keyGen(mat)
{
var hash = base64_encode(pack("H*", sha1($mat)));
var l = obj.hash.length - 4;
var p1 = Math.floor(Math.random() * (l+1)) ;
var p2 = Math.floor(Math.random() * (l+1)) ;
var p3 = Math.floor(Math.random() * (l+1)) ;
var motif1 = obj.hash.substr(p1, 4) ;
var motif2 = obj.hash.substr(p2, 4) ;
var motif3 = obj.hash.substr(p3, 4) ;
var cle = motif1+motif2+motif3 ;
return cle ;
}
对于哈希,我使用该函数,但我无法修改它:
public static String get_SHA_512_SecurePassword(String passwordToHash, String salt){
String generatedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(salt.getBytes(StandardCharsets.UTF_8));
byte[] bytes = md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for(int i=0; i< bytes.length ;i++){
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
generatedPassword = sb.toString();
}
catch (NoSuchAlgorithmException e){
e.printStackTrace();
}
return generatedPassword;
}
解决方案
function keyGen(mat) {
// seems to get the sha1 of $mat (whatever that is),
// converts this sha1 into HEX string
// encode the hex string into into base64
// the above is a GUESS, as I don't know what library you are using for these functions
var hash = base64_encode(pack("H*", sha1($mat)));
// length of `obj.hash` - whatever that is
var l = obj.hash.length - 4;
// random number between 0 and l + 1
var p1 = Math.floor(Math.random() * (l+1)) ;
// random number between 0 and l + 1
var p2 = Math.floor(Math.random() * (l+1)) ;
// random number between 0 and l + 1
var p3 = Math.floor(Math.random() * (l+1)) ;
// a substring of whatever obj.hash is, from position p1 length 4
var motif1 = obj.hash.substr(p1, 4) ;
// a substring of whatever obj.hash is, from position p2 length 4
var motif2 = obj.hash.substr(p2, 4) ;
// a substring of whatever obj.hash is, from position p3 length 4
var motif3 = obj.hash.substr(p3, 4) ;
// the string concatenation of the above three strings
var cle = motif1+motif2+motif3 ;
// returns this 12 character string
return cle ;
}
现在,你需要弄清楚的是
- 什么是
base64_encode
- 什么是
pack
- 什么是
sha1
- 什么是
$mat
obj
你用obj.hash
的是什么- 为什么你要创造
hash
却从不使用它 - 为什么你从不使用
mat
论点
推荐阅读
- python - 在我的 Windows 7 上安装 pip 很困难
- javascript - 将状态数组发送到另一个组件以在 REACT.js 中呈现
- c - 在arduino中将两个uint8字节转换为uint16字节的最佳方法是什么?
- angular - 如何通过Angular中的属性启用常量导入模板中的组件而无需代理?
- ajax - 操作方法返回原始 json 数据而不是 ASP.NET Core 2.2 中的视图
- python-3.x - 如何在 Python 中将字节字符串转换为字节?
- firebase-realtime-database - Exoplayer在recyclerview中播放22-25次后停止工作并显示空白屏幕
- javascript - 反应运行时我的反应智能感知不起作用
- html - 无法让两个特定的小部件出现在同一个 html 文档中(从 .Rmd 文件编写),但任何一个都可以单独工作
- c++ - 导入模块的标准方式