Java-ME/J2ME中的SHA-256散列函数

Java-ME/J2ME中的SHA-256散列函数,java-me,hmac,sha256,Java Me,Hmac,Sha256,我已经在诺基亚开发者论坛上发布了这个问题,请耐心等待 我正在编写一个应用程序,它需要找到用唯一值键入的URL的SHA-256散列–即hmac('sha256','27/3','9EWVFmHpHN6n2YKW9QtvUqX3xbsFQUBovlrFddqnF7fpcSDA2q')。在JavaME/J2ME中实现这一点的最佳方法是什么 我发现了许多使用Mac类的示例,但这在javame/J2ME中不受支持 提前感谢。包含一个SHA256实现--org.bouncycastle.crypto.dig

我已经在诺基亚开发者论坛上发布了这个问题,请耐心等待

我正在编写一个应用程序,它需要找到用唯一值键入的URL的SHA-256散列–即
hmac('sha256','27/3','9EWVFmHpHN6n2YKW9QtvUqX3xbsFQUBovlrFddqnF7fpcSDA2q')
。在JavaME/J2ME中实现这一点的最佳方法是什么

我发现了许多使用
Mac
类的示例,但这在javame/J2ME中不受支持


提前感谢。

包含一个SHA256实现--
org.bouncycastle.crypto.digests.SHA256Digest
,应该适合您。

包含一个SHA256实现--
org.bouncycastle.crypto.digests.SHA256Digest
,应该适合您。

我设法得到了一些东西工作中,解决方案如下:

Digest  digest = new SHA256Digest();
HMac hmac = new HMac(digest);
hmac.init(new KeyParameter(appKeyHere));
hmac.update(requestURI, 0, lenOfReqURI);
byte[]  resBuf = new byte[digest.getDigestSize()];
hmac.doFinal(resBuf, 0);
String  resStr = new String(Hex.encode(resBuf)); // Contains final usable value

我设法使事情正常进行,解决方案如下:

Digest  digest = new SHA256Digest();
HMac hmac = new HMac(digest);
hmac.init(new KeyParameter(appKeyHere));
hmac.update(requestURI, 0, lenOfReqURI);
byte[]  resBuf = new byte[digest.getDigestSize()];
hmac.doFinal(resBuf, 0);
String  resStr = new String(Hex.encode(resBuf)); // Contains final usable value

非常感谢。您是否有一个使用示例?我发现BC API文档即使在最好的时候也令人困惑。@Bataleon BouncyCastle代码中的一些测试示例应该会有所帮助。我现在无法访问原始站点。非常感谢。您是否有一个使用示例?我发现BC API文档即使在最好的时候也令人困惑。@Bataleon BouncyCastle代码中的一些测试示例应该会有所帮助。me.hmac.doFinal(resbuf,0)当前无法访问原始站点;在这一行中,字节[]resbuf=新字节[digest.getDigestSize()]行中的“resbuf”和“resbuf”是否相同?是的,很抱歉混淆了.hmac.doFinal(resbuf,0);在这一行中,字节[]resbuf=新字节[digest.getDigestSize()]行中的“resbuf”和“resbuf”是否相同?是的,很抱歉造成混淆。