相关疑难解决方法(0)

在Android M和旧版本中使用KeyStore加密和解密用户名?

我正在尝试使用KeyStore在应用程序中加密和解密用户名,

使用KeyPairGeneratorSpec在旧版本中创建密钥,如18到22,

KeyPairGeneratorSpec如被depricated android的M的23版本,但版本的Android M支持KeyGenParameterSpec.

此KeyGenParameterSpec是否支持向后兼容性或如何执行此操作?

我尝试了这样的事情,有没有更好的解决方案.现在工作正常!

在加密和解密的Ciper.getInstance时我需要这样做.是否有任何单个参数"RSA/ECB/OAEPWithSHA-256AndMGF1Padding"或"RSA/ECB/PKCS1Padding"我可以通过这两个版本

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
            c =  Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        }else{
            c =  Cipher.getInstance("RSA/ECB/PKCS1Padding");
        }
Run Code Online (Sandbox Code Playgroud)

下面的代码现在工作正常,让我知道如何改善这一点.

密钥生成器:

genkey(){
KeyPairGenerator generator = KeyPairGenerator .getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
            if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
                TCLog.e(TAG,"Current version is 23(MashMello)");
                //Api level 23

                KeyGenParameterSpec spec = new  KeyGenParameterSpec.Builder(
                             keyName,
                            KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_ENCRYPT )
                            .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
                            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
                            .build();
                generator.initialize(spec);
            }else{
                TCLog.e(TAG,"Current version is < 23(MashMello)");
                //api level 17+ 4.4.3
                KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(getActivity())
                        .setAlias(keyName)
                        .setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
                        .setSerialNumber(BigInteger.ONE)
                        .setStartDate(start.getTime())
                        .setEndDate(end.getTime())
                        .build(); …
Run Code Online (Sandbox Code Playgroud)

encryption android cryptography rsa android-keystore

25
推荐指数
1
解决办法
5642
查看次数