String[] stringArray = (String[]) dotREZApi.getCurrentRequest().getResponseHeaders().get("X-Session-Id");
String tmpSessionId = stringArray[0];
byte[] input = null;
try {
input = new String("X-Session-Sig" + tmpSessionId + "test").getBytes("UTF-8"); // String that will be converted
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println("Unsupported encoding exception");
e.printStackTrace();
}
// trying to create a key, i don't know if this is right I just did this because I needed a key
byte[] key = new byte[4];
int tmpInt = new Random().nextInt();
key[0] = (byte)(tmpInt >> 24);
key[1] = (byte)(tmpInt >> 16);
key[2] = (byte)(tmpInt >> 8);
key[3] = (byte)(tmpInt);
Digest digest = new SHA256Digest();
HMac hmac = new HMac(digest);
hmac.init(new KeyParameter(key)); // maybe this is the problem? the documentaiton never states where do I get this key or how to generate it
hmac.update(input, 0, input.length);
byte[] output = new byte[digest.getDigestSize()];
hmac.doFinal(output, 0);
dotREZApi.setSessionSig(new String(Hex.encode(output)));
行input=new String(“x-session-sig”+tmpSessionId+“test”).getbytes(“utf-8”);
是我构造字符串并将其转换为byte[]以转换为SHA-256散列的地方,其中tmpSessionId是我从HTTP请求中获取的值。产生的散列将在以后的请求中发送。
最后我没有使用BouncyCastle。
我最终使用了来自J2ME的MessageDigest,虽然它没有相同的方法可用,但我可以让它工作:
byte[] input = null;
try {
input = new String("X-Session-Id" + tmpSessionId + "test").getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println("Unsupported encoding exception");
e.printStackTrace();
}
MessageDigest messageDigest;
byte[] output = new byte[32]; // since SHA256 hash is 256 bits = 32 bytes
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(input, 0, input.length);
messageDigest.digest(output, 0, 32); // same
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DigestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我希望这种BouncyCastle的替代方案也适用于其他人。
问题内容: 我正在尝试在Android中获取字符串的SHA256。 这是我要匹配的PHP代码: 现在,在Java中,我正在尝试执行以下操作: 但这会打印出来:“ a42yzk3axdv3k4yh98g8” 我在这里做错了什么? 归功于erickson: 问题答案: PHP函数意味着它需要一个字节字符串并将其编码为十六进制数字。 在Java代码中,您尝试获取一堆随机字节,并使用平台的默认字符编码将它
我已经在诺基亚开发者论坛上发布了这个问题,所以请原谅我。 我正在编写一个应用程序,它需要查找一个URL的SHA-256哈希,该URL以唯一的值键控,即。在Java ME/J2ME中最好的方法是什么?
我正在尝试使用亚马逊的弹性代码转换器。这里我需要sha-256散列一个字符串;http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html 我已经尝试了我在网上找到的任何方法,但我找不到与页面和一些在线哈希网站提供的相同的结果。 下面是要散列的字符串,您可以从上面的链接中找到; 以下是预期结果: 3
问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代
给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?
问题内容: 我想这些类型的值,转换的,,等多项。在JavaScript中,我们可以使用,但是PHP中有可用的类似方法吗? 问题答案: 通常不需要这样做,因为PHP在大多数情况下都会为您强制类型。对于那些你想显式转换型的情况下,_投_它: