我曾经在iPhone上开发应用程序的时间我将String转换为SHA1,有两个组合:
现在我正在开发一个Android应用程序,我没有任何关于如何使用key计算SHA1的示例。
我非常感谢任何指导或帮助。
private void convertStringToSHA1()
{
String sTimeStamp = new SimpleDateFormat("MM/dd/yyyy HH:MM:SS").format(new java.util.Date());
String sStringToHash = String.format("%1$s\n%2$s", "Username",sTimeStamp);
MessageDigest cript = MessageDigest.getInstance("SHA-1");
cript.reset();
cript.update(sStringToHash.getBytes("utf-8"));
sStringToHash = new BigInteger(1, cript.digest()).toString(16);
}
答案 0 :(得分:4)
尝试类似的东西:
private String sha1(String s, String keyString) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);
byte[] bytes = mac.doFinal(s.getBytes("UTF-8"));
return new String( Base64.encodeBase64(bytes));
}
SecretKeySpec docs。
答案 1 :(得分:0)
另一个解决方案是使用apache commons编解码器库:
@Grapes(
@Grab(group='commons-codec', module='commons-codec', version='1.10')
)
import org.apache.commons.codec.digest.HmacUtils
HmacUtils.hmacSha1Hex(key.bytes, message.bytes)