相关疑难解决方法(0)

在Android中使用AES加密的最佳做法是什么?

为什么我问这个问题:

我知道有很多关于AES加密的问题,即使对于Android也是如此.如果你在网上搜索,有很多代码片段.但是在每一个页面上,在每个Stack Overflow问题中,我都发现了另一个具有重大差异的实现.

所以我创建了这个问题以找到"最佳实践".我希望我们可以收集最重要的要求列表,并建立一个非常安全的实施!

我读到了初始化载体和盐.并非我发现的所有实现都具有这些功能.所以你需要它吗?它是否会增加安全性?你是如何实现它的?如果加密数据无法解密,算法是否应该引发异常?或者这是不安全的,它应该只返回一个不可读的字符串?算法可以使用Bcrypt而不是SHA吗?

我发现这两个实现怎么样?他们还好吗?缺少完美或一些重要的事情?这些是安全的吗?

算法应该使用字符串和"密码"进行加密,然后使用该密码加密字符串.输出应该是一个字符串(十六进制或base64?).当然,解密也应该是可能的.

什么是Android的完美AES实现?

实施#1:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class AdvancedCrypto implements ICrypto {

        public static final String PROVIDER = "BC";
        public static final int SALT_LENGTH = 20;
        public static final int IV_LENGTH = 16;
        public static final int PBE_ITERATION_COUNT = 100;

        private static final String RANDOM_ALGORITHM = "SHA1PRNG";
        private static final String HASH_ALGORITHM = "SHA-512";
        private static final …
Run Code Online (Sandbox Code Playgroud)

encryption android aes

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

标签 统计

aes ×1

android ×1

encryption ×1