Base64.java

  1. import java.io.ByteArrayOutputStream;
  2. import java.io.IOException;
  3. import java.io.OutputStream;
  4.  
  5. public class Base64 {
  6. private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  7. .toCharArray();
  8.  
  9. /**
  10. * data[]进行编码
  11. *
  12. * @param data
  13. * @return
  14. */
  15. public static String encode(byte[] data) {
  16. int start = 0;
  17. int len = data.length;
  18. StringBuffer buf = new StringBuffer(data.length * 3 / 2);
  19.  
  20. int end = len - 3;
  21. int i = start;
  22. int n = 0;
  23.  
  24. while (i <= end) {
  25. int d = ((((int) data[i]) & 0x0ff) << 16)
  26. | ((((int) data[i + 1]) & 0x0ff) << 8)
  27. | (((int) data[i + 2]) & 0x0ff);
  28.  
  29. buf.append(legalChars[(d >> 18) & 63]);
  30. buf.append(legalChars[(d >> 12) & 63]);
  31. buf.append(legalChars[(d >> 6) & 63]);
  32. buf.append(legalChars[d & 63]);
  33.  
  34. i += 3;
  35.  
  36. if (n++ >= 14) {
  37. n = 0;
  38. buf.append(" ");
  39. }
  40. }
  41.  
  42. if (i == start + len - 2) {
  43. int d = ((((int) data[i]) & 0x0ff) << 16)
  44. | ((((int) data[i + 1]) & 255) << 8);
  45.  
  46. buf.append(legalChars[(d >> 18) & 63]);
  47. buf.append(legalChars[(d >> 12) & 63]);
  48. buf.append(legalChars[(d >> 6) & 63]);
  49. buf.append("=");
  50. } else if (i == start + len - 1) {
  51. int d = (((int) data[i]) & 0x0ff) << 16;
  52.  
  53. buf.append(legalChars[(d >> 18) & 63]);
  54. buf.append(legalChars[(d >> 12) & 63]);
  55. buf.append("==");
  56. }
  57.  
  58. return buf.toString();
  59. }
  60.  
  61. private static int decode(char c) {
  62. if (c >= 'A' && c <= 'Z')
  63. return ((int) c) - 65;
  64. else if (c >= 'a' && c <= 'z')
  65. return ((int) c) - 97 + 26;
  66. else if (c >= '0' && c <= '9')
  67. return ((int) c) - 48 + 26 + 26;
  68. else
  69. switch (c) {
  70. case '+':
  71. return 62;
  72. case '/':
  73. return 63;
  74. case '=':
  75. return 0;
  76. default:
  77. throw new RuntimeException("unexpected code: " + c);
  78. }
  79. }
  80.  
  81. /**
  82. * Decodes the given Base64 encoded String to a new byte array. The byte
  83. * array holding the decoded data is returned.
  84. */
  85.  
  86. public static byte[] decode(String s) {
  87.  
  88. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  89. try {
  90. decode(s, bos);
  91. } catch (IOException e) {
  92. throw new RuntimeException();
  93. }
  94. byte[] decodedBytes = bos.toByteArray();
  95. try {
  96. bos.close();
  97. bos = null;
  98. } catch (IOException ex) {
  99. System.err.println("Error while decoding BASE64: " + ex.toString());
  100. }
  101. return decodedBytes;
  102. }
  103.  
  104. private static void decode(String s, OutputStream os) throws IOException {
  105. int i = 0;
  106.  
  107. int len = s.length();
  108.  
  109. while (true) {
  110. while (i < len && s.charAt(i) <= ' ')
  111. i++;
  112.  
  113. if (i == len)
  114. break;
  115.  
  116. int tri = (decode(s.charAt(i)) << 18)
  117. + (decode(s.charAt(i + 1)) << 12)
  118. + (decode(s.charAt(i + 2)) << 6)
  119. + (decode(s.charAt(i + 3)));
  120.  
  121. os.write((tri >> 16) & 255);
  122. if (s.charAt(i + 2) == '=')
  123. break;
  124. os.write((tri >> 8) & 255);
  125. if (s.charAt(i + 3) == '=')
  126. break;
  127. os.write(tri & 255);
  128.  
  129. i += 4;
  130. }
  131. }
  132.  
  133. }

DES.java

  1. package cn.crane.game.puzzle.utils.security;
  2. import javax.crypto.Cipher;
  3. import javax.crypto.spec.IvParameterSpec;
  4. import javax.crypto.spec.SecretKeySpec;
  5.  
  6. public class DES {
  7. private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
  8.  
  9. /**
  10. * 加密
  11. *
  12. * @param encryptString
  13. * @param encryptKey
  14. * @return
  15. * @throws Exception
  16. */
  17. public static String encryptDES(String encryptString, String encryptKey) {
  18. // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
  19. try {
  20. IvParameterSpec zeroIv = new IvParameterSpec(iv);
  21. SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
  22. Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
  23. cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
  24. byte[] encryptedData = cipher.doFinal(encryptString.getBytes());
  25.  
  26. return Base64.encode(encryptedData);
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. return "";
  31. }
  32.  
  33. /**
  34. * 解密
  35. *
  36. * @param decryptString
  37. * @param decryptKey
  38. * @return
  39. * @throws Exception
  40. */
  41. public static String decryptDES(String decryptString, String decryptKey) {
  42. try {
  43. byte[] byteMi = Base64.decode(decryptString);
  44. IvParameterSpec zeroIv = new IvParameterSpec(iv);
  45. // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
  46. SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");
  47. Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
  48.  
  49. cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
  50. byte decryptedData[] = cipher.doFinal(byteMi);
  51.  
  52. return new String(decryptedData);
  53. } catch (Exception e) {
  54. e.printStackTrace();
  55. }
  56. return "";
  57.  
  58. }
  59. }

Android--DES加密的更多相关文章

  1. Android DES加密的CBC模式加密解密和ECB模式加密解密

    DES加密共有四种模式:电子密码本模式(ECB).加密分组链接模式(CBC).加密反馈模式(CFB)和输出反馈模式(OFB). CBC模式加密: import java.security.Key; i ...

  2. android -------- DES加密解密算法

    DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信 ...

  3. Android Des加密解密

    算法转自:http://www.linuxidc.com/Linux/2011-08/41866.htm import java.security.Key; import java.security. ...

  4. Android数据加密之Des加密

    前言: 端午节前有个同事咨询我有关Android DES加密的相关实现,简单的实现了一下,今天来总结一下. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes加密 ...

  5. Android和java平台 DES加密解密互通程序及其不能互通的原因

    网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和java DES加密的程序不能互通.就是加密的结果不一样 ...

  6. Android DES AES MD5加密

    AES加密: <span style="font-size:18px;">package com.example.encrypdate.util; import jav ...

  7. Android客户端与服务器端通过DES加密认证

    转载地址:http://blog.csdn.net/spring21st/article/details/6730283 由于Android应用没有像web开发中的session机制,所以采用PHPS ...

  8. Java android DES+Base64加密解密

    服务器与客户端加密解密传输, 中间遇到各种坑,客户端无论用AES还是DES解密时都会出现错误,后来才看到好多人说要用AES/DES加完密后还要BASE64加密,照做时发现android和java的Ba ...

  9. 【Android工具类】怎样保证Android与server的DES加密保持一致

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比較敏感的数据的时候,我们一般会对数据进行简单的加密.在与server之间的数据交互中 ...

  10. [android]DES/3DES/AES加密方式

    DES 支持8位加密解密,3Des支持24位,Aes支持32位.3Des是Des算法做三次.位数的单位是字节byte.不是bits. 3Des是把24位分成3组.第一组八位用来加密,第二组8位用于解密 ...

随机推荐

  1. Rancher2.3.2部署Kubenetes Dashboard

    首先进入到集群中的System命令空间,因为kubenetes dashboard是给整个集群使用的,并不是默认的Default命名空间使用的 Default命名空间,是默认的命名空间,也是在部署其他 ...

  2. python编译exe后在windows2003上报错

    最近使用python写了一个分析nmon结果的小程序,用的是python3.8.win7环境,pyinstaller生成exe后,在win7上运行一切正常.拿到内网分享给团队成员,在windows20 ...

  3. mysql删除大表

    在mysql中遇到一个大表,大概有17G左右,在对这个表进行查询.修改时均遇到了很大的困难,于是想着删除这张表.通常的删除操作可以通过delete.drop.truncate操作,试了这三个命令,但是 ...

  4. PHP用strtotime()函数比较两个时间的大小实例详解

    在PHP开发中,我们经常会对两个时间的大小进行判断,但是,在PHP中,两个时间是不可以直接进行比较,因为时间是由年.月.日.时.分.秒组成的,所以,如果需要将两个时间进行比较的话,我们首先要做的就是将 ...

  5. RNA剪接体 Spliceosome | 冷冻电镜 | 结构生物学

    冷冻电镜 为什么冷冻电镜 (Cryo-EM) 技术的发明可以获得2017诺贝尔化学奖?知乎看法 Press release: The Nobel Prize in Chemistry 2017 We ...

  6. vuejs2从入门到精通视频教程

    https://www.cnblogs.com/web-666/p/8648607.html 一.基础部分 0.课件 1.介绍 2.vue实例 3.模板语法 4.计算属性和观察者 5.Class与St ...

  7. Redis数据库漏洞防护

    Redis是一个高性能的数据库,Redis Crackit及Redis安全漏洞本质上是由于Redis自身缺乏安全防护机制,同时Redis的使用者又未曾遵循官方的安全规范所导致的. Redis安全漏洞 ...

  8. Centos7 安装 weblogic12.2.1.0.0

    下载地址:地址:http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html 下载最新的we ...

  9. Office Tool Plus

    https://otp.landian.vip/zh-cn/index.html 本软件支持Microsoft Office办公软件最新版本高速下载.卸载.修复.定制化安装.静默安装等诸多功能. 同时 ...

  10. ActiveMQ之三--JMS-Spring和ActiveMQ整合的完整实

    这篇博文,我们基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了Point-To-Point的异步队列消息和PUB/S ...