相关疑难解决方法(0)

如何在Android中计算字符串的SHA-256哈希值?

我想在Android中获取字符串的SHA256.

这是我要匹配的PHP代码:

echo bin2hex(mhash(MHASH_SHA256,"asdf"));
//outputs "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b"
Run Code Online (Sandbox Code Playgroud)

现在,在Java中,我正在尝试执行以下操作:

            String password="asdf"
            MessageDigest digest=null;
    try {
        digest = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
       digest.reset();
       try {
        Log.i("Eamorr",digest.digest(password.getBytes("UTF-8")).toString());
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

但这打印出来:"a42yzk3axdv3k4yh98g8"

我在这做错了什么?


解决方案感谢erickson:

 Log.i("Eamorr",bin2hex(getHash("asdf")));

 public byte[] getHash(String password) {
       MessageDigest digest=null;
    try {
        digest = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
       digest.reset();
       return digest.digest(password.getBytes());
 }
static String bin2hex(byte[] data) …
Run Code Online (Sandbox Code Playgroud)

php java android sha digest

47
推荐指数
3
解决办法
5万
查看次数

如何找出我的JVM支持哪种算法[加密]?

我正在使用Jasypt进行加密.这是我的代码:

public class Encryptor {    
    private final static StandardPBEStringEncryptor pbeEncryptor = new StandardPBEStringEncryptor();
    private final static String PASSWORD = "FBL";
    private final static String ALGORITHM = "PBEWithMD5AndTripleDES";

    static{
        pbeEncryptor.setPassword( PASSWORD );
        //pbeEncryptor.setAlgorithm( ALGORITHM );       
    }

    public static String getEncryptedValue( String text ){
        return pbeEncryptor.encrypt( text );
    }

    public static String getDecryptedValue( String text ){
        return pbeEncryptor.decrypt( text );
    }

}
Run Code Online (Sandbox Code Playgroud)

取消注释该setAlgorithm行,它将引发异常

org.jasypt.exceptions.EncryptionOperationNotPossibleException:加密引发了异常.可能的原因是您使用的是强加密算法,并且尚未在此Java虚拟机中安装Java Cryptography Ex tension(JCE)Unlimited Strength Jurisdiction Policy Files

api说:

设置用于加密的算法设置用于加密的算法,如PBEWithMD5AndDES.

JCE提供程序必须支持此算法(如果不指定,则为默认JVM提供程序),如果支持,则还可以为其指定模式和填充,如ALGORITHM/MODE/PADDING .

参考:http://www.jasypt.org/api/jasypt/apidocs/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html#setAlgorithm%28java.lang.String%29 …

java encryption jvm jasypt

31
推荐指数
1
解决办法
4万
查看次数

哪个版本的Android支持哪些包签名算法?

鉴于我想支持所有的设备,比如Froyo或更高版本,我可以使用哪种最安全的签名算法?我不需要将我的APK放在Android Market中.

我知道,例如,有些手机支持sha1withrsa但不支持sha256withrsa(Link).

android sha

8
推荐指数
1
解决办法
2882
查看次数

React Native 中的 SHA256

我需要使用 React Native 计算 Android 和 iOS 中许多文件的 SHA256 哈希值。当用户选择文件时,我的应用程序将开始计算每个文件的 SHA256。

对于网页,我一直使用 crypto-js。但对于 Andoid 和 iOS 应用程序,我担心 crypto-js 的性能可能不够快,因为文件(例如视频文件)可能 >400 MB。

有什么方法可以调用 Android/iOS 原生 api 来计算 SHA256,而不是为了性能而使用 crypto-js 吗?

sha cryptojs react-native

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

sha ×3

android ×2

java ×2

cryptojs ×1

digest ×1

encryption ×1

jasypt ×1

jvm ×1

php ×1

react-native ×1