java - 这使用了什么类型的加密?
问题描述
我是移动编程的新手,尤其是加密,有人知道下面这段代码中使用了什么类型的加密吗?
static String encrypt(String text) throws Exception
{
String password = AppData.ENCRYPT_SERVER;
final byte[] pass = password.getBytes(US_ASCII);
final byte[] salt = (new SecureRandom()).generateSeed(8);
final byte[] inBytes = text.getBytes(UTF_8);
final byte[] passAndSalt = array_concat(pass, salt);
byte[] hash = new byte[0];
byte[] keyAndIv = new byte[0];
for (int i = 0; i < 3 && keyAndIv.length < 48; i++) {
final byte[] hashData = array_concat(hash, passAndSalt);
final MessageDigest md = MessageDigest.getInstance("MD5");
hash = md.digest(hashData);
keyAndIv = array_concat(keyAndIv, hash);
}
final byte[] keyValue = Arrays.copyOfRange(keyAndIv, 0, 32);
final byte[] iv = Arrays.copyOfRange(keyAndIv, 32, 48);
final SecretKeySpec key = new SecretKeySpec(keyValue, "AES");
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] data = cipher.doFinal(inBytes);
data = array_concat(array_concat(SALTED_MAGIC, salt), data);
return Base64.encodeToString(data, Base64.DEFAULT);
}
解决方案
推荐阅读
- excel - 将值导入数组时出现类型不匹配错误
- python - 使用过滤视图插入原始数据框
- java - 如何在 macos 上设置 LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
- javascript - 为什么 Leaflet.LayerGroup.Collision 不适用于我的 L.GeoJSON?
- wordpress - 自定义帖子类型分页显示但 404s
- reactjs - 在域中添加 WWW?
- aws-java-sdk - 在 Java 桌面应用程序中从 Appsync 获取数据的最佳方式
- java - 如何将“Data.Json”文件从资产保存到内部存储,然后将其用于读/写
- terraform - terraform aws api gateway 为每个 api 密钥配置方法限制
- python-3.x - Python CGI 的 Elasticsearch circuit_breaking_exception 问题