Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android(Java)的PHP crypt($pw,$salt)河豚等价物_Java_Php_Android_Encryption - Fatal编程技术网

Android(Java)的PHP crypt($pw,$salt)河豚等价物

Android(Java)的PHP crypt($pw,$salt)河豚等价物,java,php,android,encryption,Java,Php,Android,Encryption,我使用河豚用随机生成的salt加密密码,salt也存储在数据库中 $password = "someString"; $salt= "$2a$07$0dade6ad90a6cc2639b236876538b5fe$" // "$2a$07$". md5(mt_rand()) . "$"; $pw = crypt($password,$salt); // $2a -> Blowfish // $pw would be $2a$07$0dade6ad90a6cc2639b23uwYL2QMyq

我使用河豚用随机生成的salt加密密码,salt也存储在数据库中

$password = "someString";
$salt= "$2a$07$0dade6ad90a6cc2639b236876538b5fe$" // "$2a$07$". md5(mt_rand()) . "$";
$pw = crypt($password,$salt); // $2a -> Blowfish
// $pw would be $2a$07$0dade6ad90a6cc2639b23uwYL2QMyqG3piDr3N/D0oGvdD4NF7CIy
所以我的实际问题是: 我正在编写一个需要登录的android应用程序。因此,当我通过POST发送密码字段中的数据时,没有加密,这是非常不安全的

那么有没有办法在ANDROID上生成河豚PW呢?我尝试过许多其他教程,如


也发现了这一点:但没有解决我的问题


这是第一个链接:

public static String encryptBlowfish(String to_encrypt, String strkey) {
    try {
        SecretKeySpec key = new SecretKeySpec(strkey.getBytes(), "Blowfish");
        Cipher cipher = Cipher.getInstance("Blowfish");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        return new String(cipher.doFinal(to_encrypt.getBytes()).toString()); // Added here .toString() because otherwise I get some hardcoded text
    } catch (Exception e) { return null; }
}
但是当我用salt加密密码时,我只得到了一个长度为11的字符串…
所以我调用encryptBlowfish(“someString”,“0dade6ad90a6cc2639b236876538b5fe”)返回字符串为
[B@42ab9778




那么我做错了什么?!

要获取正确的加密密码,请不要使用“返回新密码”命令

返回新字符串(cipher.doFinal(to_encrypt.getBytes()).toString());

反而

Base64.encodeToString(Data,Base64.DEFAULT); //Data is the result cointainer of cipher.doFinal.

字节数组不是字符串,Java不是php。那么如何解决我的问题呢?