[Android Pro] DES加密 version1
2023-09-14 08:56:59 时间
reference to : http://blog.csdn.net/wfung_kwok/article/details/7766029
加密和解密要用同一個key
AES:
import java.util.UUID; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class DES { private static final byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 }; /** * * @param encryptString 加密内容 * @param encryptKey 加密key * @return * @throws Exception */ public static String encryptDES(String encryptString, String encryptKey) throws Exception { IvParameterSpec zeroIv = new IvParameterSpec(iv); SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv); String tmp = Base64.encodeBytes(encryptString.getBytes("UTF-8")); byte[] encryptedData = cipher.doFinal(tmp.getBytes("UTF-8")); return Base64.encodeBytes(encryptedData); } /** * * @param decryptString 解密内容 * @param encryptKey 解密key * @return * @throws Exception */ public static String decryptDES(String decryptString,String encryptKey)throws Exception { IvParameterSpec zeroIv = new IvParameterSpec(iv); SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, key, zeroIv); byte[] decryptBytes = cipher.doFinal(Base64.decode(decryptString)); String tmp = new String(decryptBytes,"UTF-8"); return new String(Base64.decode(tmp)); } public static String getKey(){ String p = UUID.randomUUID().toString(); return SHA1.Encrypt(p).substring(0, 8); } }
Test:
public static void testDES() throws Exception{ String content = "AES加密"; String key = DES.getKey(); String a = DES.encryptDES(content, key); System.out.println("DES Encrypt..." + a); String b = DES.decryptDES(a, key); System.out.println("DES decrypt..." + b); }
Console:
DES Encrypt...93koM7boCXsNrH91Y0MDJA==
DES decrypt...AES加密
相关文章
- Android常用加密库集合
- android图片资源加密,Android平台图像文件加密
- 最全的android图片加密
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- Android preference_android studio preview
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android游戏引擎_2d游戏引擎
- Android SDK Tools_android.intent.category.DEFAULT
- Android 数据库加密 android-database-sqlcipher 开源版本编译过程
- Android基于EasyPermission封装实现快速权限申请
- 【Android 安全】DEX 加密 ( 常用 Android 反编译工具 | apktool | dex2jar | enjarify | jd-gui | jadx )
- 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )
- 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 源码分析 )
- 【Android 安全】DEX 加密 ( Application 替换 | ActivityThread 中的 mAllApplications 集合添加 Application )
- 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 中根据 File 加载 DexFile | loadDexFile 分析 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- 【Android Gradle 插件】BuildType 编译类型配置 ② ( consumerProguardFiles 配置 | debuggable 配置 | embedMicroApp配置 )
- 【Android UI】Canvas 画布 ④ ( Canvas 坐标系 | Canvas 自身坐标系 | Canvas 绘图坐标系 )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包、源码、文档上传到本地Maven 仓库 )
- Windows PC、Linux、Android、iOS 跨平台视频云客户端 QML 开发解决方案
- 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )
- 基于Android官方AsyncListUtil优化经典ListView分页加载机制(二)详解手机开发
- android向前兼容和向后兼容详解手机开发
- android书架效果实现原理与代码
- 深入Android五大布局对象的应用
- Android取得状态栏、任务栏高度的小例子
- Android加密解密字符串详解
- Android获取assets文件夹中的数据并写入SD卡示例