找到了AES加密算法。(当然还有MD5,BASE64什么的http://snowolf.iteye.com/blog/379860这篇文章列举了很多,但是基本都是j2se平台的,android平台不一定支持,但是AES算法Android是自带了包的,从官方的http://developer.android.com/reference/javax/crypto/Cipher.html可以看到。

AES加密算法是什么?大家可以自己去google,专家级程序员写好包,工程人员会用就行了。

这个例子其实是来自http://www.tutorials-android.com/learn/How_to_encrypt_and_decrypt_strings.rhtml

src目录主文件:

  1. package com.qq;
  2. import java.security.SecureRandom;
  3. import javax.crypto.Cipher;
  4. import javax.crypto.KeyGenerator;
  5. import javax.crypto.SecretKey;
  6. import javax.crypto.spec.SecretKeySpec;
  7. import android.app.Activity;
  8. import android.os.Bundle;
  9. import android.util.Log;
  10. public class SimpleCrypto extends Activity {
  11. public static String encrypt(String seed, String cleartext) throws Exception {
  12. byte[] rawKey = getRawKey(seed.getBytes());
  13. byte[] result = encrypt(rawKey, cleartext.getBytes());
  14. return toHex(result);
  15. }
  16. public static String decrypt(String seed, String encrypted) throws Exception {
  17. byte[] rawKey = getRawKey(seed.getBytes());
  18. byte[] enc = toByte(encrypted);
  19. byte[] result = decrypt(rawKey, enc);
  20. return new String(result);
  21. }
  22. private static byte[] getRawKey(byte[] seed) throws Exception {
  23. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  24. SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
  25. sr.setSeed(seed);
  26. kgen.init(128, sr); // 192 and 256 bits may not be available
  27. SecretKey skey = kgen.generateKey();
  28. byte[] raw = skey.getEncoded();
  29. return raw;
  30. }
  31. private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
  32. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  33. Cipher cipher = Cipher.getInstance("AES");
  34. cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
  35. byte[] encrypted = cipher.doFinal(clear);
  36. return encrypted;
  37. }
  38. private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
  39. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  40. Cipher cipher = Cipher.getInstance("AES");
  41. cipher.init(Cipher.DECRYPT_MODE, skeySpec);
  42. byte[] decrypted = cipher.doFinal(encrypted);
  43. return decrypted;
  44. }
  45. public static String toHex(String txt) {
  46. return toHex(txt.getBytes());
  47. }
  48. public static String fromHex(String hex) {
  49. return new String(toByte(hex));
  50. }
  51. public static byte[] toByte(String hexString) {
  52. int len = hexString.length()/2;
  53. byte[] result = new byte[len];
  54. for (int i = 0; i < len; i++)
  55. result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
  56. return result;
  57. }
  58. public static String toHex(byte[] buf) {
  59. if (buf == null)
  60. return "";
  61. StringBuffer result = new StringBuffer(2*buf.length);
  62. for (int i = 0; i < buf.length; i++) {
  63. appendHex(result, buf[i]);
  64. }
  65. return result.toString();
  66. }
  67. private final static String HEX = "0123456789ABCDEF";
  68. private static void appendHex(StringBuffer sb, byte b) {
  69. sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));
  70. }
  71. /** Called when the activity is first created. */
  72. @Override
  73. public void onCreate(Bundle savedInstanceState) {
  74. super.onCreate(savedInstanceState);
  75. setContentView(R.layout.main);
  76. String masterPassword = "a";
  77. String originalText = "0123456789";
  78. byte[] text = new byte[]{'0','1','2','3','4','5','6','7','8','9'};
  79. byte[] password = new byte[]{'a'};
  80. try {
  81. String encryptingCode = SimpleCrypto.encrypt(masterPassword,originalText);
  82. //          System.out.println("加密结果为 " + encryptingCode);
  83. Log.i("加密结果为 ",encryptingCode);
  84. String decryptingCode = SimpleCrypto.decrypt(masterPassword, encryptingCode);
  85. System.out.println("解密结果为 " + decryptingCode);
  86. Log.i("解密结果",decryptingCode);
  87. } catch (Exception e) {
  88. // TODO Auto-generated catch block
  89. e.printStackTrace();
  90. }
  91. }
  92. }

布局文件main.xml和配置文件AndroidManifest.xml默认就好了。最后结果在Log里面看,利用adb logcat > d:\1.txt定位到D盘的1.txt文件,然后用记事本打开就,查找”加密结果为“就可以看到了:

运行结果(从log日志中看到的):

I/加密结果为 (  190): BFB77D8F1E1EE9D5E252926A12659DE8

I/解密结果(  190): 0123456789

Android AES加密算法及其实现的更多相关文章

  1. Android AES加密算法及事实上现

    昨天老大叫我看看android加密算法.于是网上找了找,找到了AES加密算法.(当然还有MD5,BASE64什么的http://snowolf.iteye.com/blog/379860这篇文章列举了 ...

  2. Android AES加密算法,现在实际上

    昨天,老板让我来看看android加密算法.于是在网上找了找,发现AES加密算法.(当然,MD5,BASE64什么http://snowolf.iteye.com/blog/379860这篇文章列举了 ...

  3. PHP android ios相互兼容的AES加密算法

    APP项目用户密码传输一直没有用HTTPS,考虑到用户的隐私暂时先用AES对密码加密,以后也可以用于手机端与服务端加密交互. PHP的免费版phpAES项目,手机端解码各种不对. 好不容易找了PHP ...

  4. iOS,Android,.NET通用AES加密算法

    原文:iOS,Android,.NET通用AES加密算法 这两天为移动App开发API,结果实现加密验证时碰到一大坑.这里不得不吐槽下又臭又硬的iOS,Windows Server无法解密出正确的结果 ...

  5. 【转】PHP android ios相互兼容的AES加密算法

    APP项目用户密码传输一直没有用HTTPS,考虑到用户的隐私暂时先用AES对密码加密,以后也可以用于手机端与服务端加密交互. PHP的免费版phpAES项目,手机端解码各种不对. 好不容易找了PHP ...

  6. android AES 加密解密

    import java.security.Provider; import java.security.SecureRandom; import javax.crypto.Cipher; import ...

  7. AES加密算法C++实现

    我从网上下载了一套AES加密算法的C++实现,代码如下: (1)aes.h #ifndef SRC_UTILS_AES_H #define SRC_UTILS_AES_H class AES { pu ...

  8. Qt使用AES加密算法对字符串进行加密

          因工作需要,需要对字符串进行加密处理,在网上找了很长时间,终于找到了一个可以使用的aes加密算法.其源代码采用c++编写而成,但其头文件引用windows.h,经过修改部分代码,将#inc ...

  9. .NET工行E生活接入AES加密算法的吐槽-2018

    工行E生活V2版本AES加密算法 吐槽一下工行的java算法,真的是非标准的,参考了java代码,还参考了php代码终于搞定了. 真的是很坑,很坑.中间还涉及到多重加密之类的,一行行把代码翻译成C#代 ...

随机推荐

  1. Nodejs创建简单的Bot

    官方文档地址:https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-quickstart 前提: 1.你已经 ...

  2. 转:Google Project Zero挖洞经验整理

    https://www.sec-un.org/google-project-zero%E6%8C%96%E6%B4%9E%E7%BB%8F%E9%AA%8C%E6%95%B4%E7%90%86/ 1. ...

  3. javascript获取dom的下一个节点方法

    需求说明: 获取当前节点左节点或者右节点(兄弟节点): css: <style type="text/css"> a:focus { outline: none; } ...

  4. HDU3487 Play With Chain [Splay]

    题目传送门 题目描述 Problem Description YaoYao is fond of playing his chains. He has a chain containing n dia ...

  5. Hibernate 与Spring整合出现 hibernate.HibernateException: createCriteria is not valid without active transaction

    当 Hibernate 和 Spring 整合时,在 Spring 中指定的 Hibernate.cfg.xml 文件内容中要注释掉以下内容: <!-- Enable Hibernate's a ...

  6. Check if a user is in a group

    groups or groups user

  7. bash 中的变量可以这么用

    举个例子: t.sh ====================== #!/bin/bash ./a.sh ./b.sh ======================= a.sh =========== ...

  8. python--flask框架的安装和简单使用(转)

    原文地址:http://blog.csdn.net/xiaowu8858892520/article/details/54428196

  9. 【二分】Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market

    傻逼二分 #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ll ...

  10. while an existing transition or presentation is occurring; the navigation stack will not be updated

    使用UIAlertController提示信息,在之后使用navigation进行逻辑跳转时,出现popToViewController:transition: called on <UINav ...