我正在尝试开发新版本的 Unicenta opos _ 它是一个 Openbravo 开源项目 _ 在 android 平台上工作,我几乎完成了,但我仍然有一些密码部分的问题。
我的问题是:Unicenta opos 使用 Sha1 加密将密码保存在 mysql 数据库中,所以当我尝试在我的 android 应用程序中执行相同操作时,它没有为相同的密码提供相同的加密,然后我做了什么;我查找了 Unicenta 代码源,然后我拿起了加密代码并将其放在我的应用程序中;
来自 unicenta 代码源的加密功能:
public static String hashString(String sPassword) {
if (sPassword == null || sPassword.equals("")) {
return "empty:";
} else {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(sPassword.getBytes("UTF-8"));
byte[] res = md.digest();
return "sha1:" + StringUtils.byte2hex(res);
} catch (NoSuchAlgorithmException e) {
return "plain:" + sPassword;
} catch (UnsupportedEncodingException e) {
return "plain:" + sPassword;
}
}
}
所以很明显,这个函数将字符串作为参数(密码)并返回(密码加密)
但问题是,当我尝试使用 unicenta opos加密密码(例如0000 )时,它给了我:( sha1:B6589FC6AB0DC82CF12099D1C2D40AB994E8410C),而我的 android 应用程序使用与 unicenta 相同的方法,它给了我另一个哈希(sha1:39dfa552833038d351afe20454e)
对不起,我希望有人感兴趣!
感谢你