Android 比较散列函数不需要';不能准确地比较
我想用用户输入比较两个哈希函数。如果双方都相等,那就为我干杯。这样做的目的是,我希望将来使用这种方法将哈希密码存储到数据库中,并与登录时的用户输入密码进行比较 我创建了两种输入类型,其中我通过输入给出字符串值并将其转换为散列值。当两种输入类型具有相同的值时,应该是Toast me,如果不是,则不要Toast me或给出错误 问题是,当我给出相同的值时,它会准确地让我敬酒,但当我给出两个不同的值时,它也会让我敬酒。这不是正确的结果 请告诉我如何比较这两个功能,并使登录方案 代码是:Android 比较散列函数不需要';不能准确地比较,android,Android,我想用用户输入比较两个哈希函数。如果双方都相等,那就为我干杯。这样做的目的是,我希望将来使用这种方法将哈希密码存储到数据库中,并与登录时的用户输入密码进行比较 我创建了两种输入类型,其中我通过输入给出字符串值并将其转换为散列值。当两种输入类型具有相同的值时,应该是Toast me,如果不是,则不要Toast me或给出错误 问题是,当我给出相同的值时,它会准确地让我敬酒,但当我给出两个不同的值时,它也会让我敬酒。这不是正确的结果 请告诉我如何比较这两个功能,并使登录方案 代码是: @Overr
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
value1 = (EditText) findViewById(R.id.value1);
value2 = (EditText) findViewById(R.id.value2);
computeSha = (Button) findViewById(R.id.btn1);
result = (TextView) findViewById(R.id.textView2);
//get username and password entered
username = userName.getText().toString();
passwd = passWord.getText().toString();
//check if username or passwd is not null
if ((username != null && username.equals("")) || (passwd != null && passwd.equals(""))) {
computeSha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//call method to compute SHA hash
computeSHAHash(value1);
computeSHAHash(value2);
if (computeSHAHash(value1).equals(computeSHAHash(value2))) {
Toast.makeText(MainActivity.this, "matched", Toast.LENGTH_SHORT).show();
}
}
});
}
}
private String convertToHex(byte[] data) throws java.io.IOException
{
StringBuffer sb = new StringBuffer();
String hex=null;
hex=Base64.encodeToString(data, 0, data.length, NO_OPTIONS);
sb.append(hex);
return sb.toString();
}
public String computeSHAHash(String password)
{
MessageDigest mdSha1 = null;
try
{
mdSha1 = MessageDigest.getInstance("SHA-512");
} catch (NoSuchAlgorithmException e1) {
Log.e("myapp", "Error initializing SHA1 message digest");
}
try {
mdSha1.update(password.getBytes("ASCII"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] data = mdSha1.digest();
try {
SHAHash=convertToHex(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result.setText("SHA-1 hash generated is: " + " " + SHAHash);
return SHAHash;
}
哈希函数:
private String convertToHex(byte[] data) throws java.io.IOException
{
StringBuffer sb = new StringBuffer();
String hex=null;
hex=Base64.encodeToString(data, 0, data.length, NO_OPTIONS);
sb.append(hex);
return sb.toString();
}
public String computeSHAHash(String password)
{
MessageDigest mdSha1 = null;
try
{
mdSha1 = MessageDigest.getInstance("SHA-512");
} catch (NoSuchAlgorithmException e1) {
Log.e("myapp", "Error initializing SHA1 message digest");
}
try {
mdSha1.update(password.getBytes("ASCII"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] data = mdSha1.digest();
try {
SHAHash=convertToHex(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result.setText("SHA-1 hash generated is: " + " " + SHAHash);
return SHAHash;
}