android - Android中的加密/解密
问题描述
我已经使用静态密码(即“加密”)在 android 中进行了加密。加密工作正常并加密数据。但是当我尝试解密它没有显示的加密文本时。解密代码如下。
public String decrypt(String msg, String inputPassword) throws Exception{
SecretKeySpec key= generateKey(inputPassword);
Cipher c = Cipher.getInstance(AES);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decodedValue= Base64.decode(msg, Base64.DEFAULT);
/*If this line is present the encrypted message is not seen*/
byte[] decValue = c.doFinal(Base64.decode(decodedValue,
Base64.DEFAULT));
String decryptedValue = new String(decodedValue);
String decryptedValue = new String(decValue, StandardCharsets.UTF_8);
return decryptedValue;
}
启用代码(在注释下方)时。不显示该消息。但是当该行被评论时。这显示在消息框中
这是加密和密钥生成方法。
public String encrypt(String message, String inputPassword) throws Exception{
SecretKeySpec key = generateKey(inputPassword);
Cipher c = Cipher.getInstance(AES);
c.init(c.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(message.getBytes());
String encryptedValue = Base64.encodeToString(encVal, Base64.DEFAULT);
return encryptedValue;
}
//For generating key for encryption
public SecretKeySpec generateKey(String inputPassword) throws Exception{
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] bytes = inputPassword.getBytes("UTF-8");
digest.update(bytes, 0, bytes.length);
byte[] key = digest.digest();
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
return secretKeySpec;
}
日志如下 在此处输入图像描述
API级别也没有维护......我也不知道在哪里设置它。 在此处输入图像描述
解决方案
你能试着改变这个吗
String decryptedValue = new String(decodedValue)
对此
String decryptedValue = new String(decodedValue, StandardCharsets.UTF_8)
对于您的错误,请尝试更改为
c.doFinal(Base64.decode(decodedValue, Base64.DEFAULT))
推荐阅读
- codenameone - 不在 Android VKB 中显示 Next 或 Done 按钮
- django - DRF:AttributeError:类型对象“Plan”没有属性“get_extra_actions”
- ios - 您可以在没有单独网站的情况下设置 iOS 通用链接吗?
- prometheus - Prometheus 平滑利用率指标
- python - 如何搜索两个 json 文件以找到匹配项
- c# - 在类库中使用 asp.net core mvc 的预览版
- node.js - ( Alexa ) 是否有可能在同一个 Intent Handler 中获得响应?
- ios - 属性未在 SKScene 上初始化
- swift - 当我向下滚动表格视图时,隐藏单元格的复选标记消失了
- symfony - 树枝模板symfony 4中的重复表单行