#region   跨平台加解密(c# 安卓 IOS)

       //  public static string sKey = "12345678";

       //  /// 

       //  /// 解密

       //  /// 

       //  /// 要解密的以Base64

       //  /// 密钥,且必须为8位

       //  /// 已解密的字符串

       //  public static string DesDecrypt(string pToDecrypt)

       //  {

       //      //转义特殊字符

       //      pToDecrypt = pToDecrypt.Replace("-", "+");

       //      pToDecrypt = pToDecrypt.Replace("_", "/");

       //      pToDecrypt = pToDecrypt.Replace("~", "=");

       //      byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);

       //      using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())

       //      {

       //          des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

       //          des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

       //          System.IO.MemoryStream ms = new System.IO.MemoryStream();

       //          using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))

       //          {

       //              cs.Write(inputByteArray, 0, inputByteArray.Length);

       //              cs.FlushFinalBlock();

       //              cs.Close();

       //          }

       //          string str = Encoding.UTF8.GetString(ms.ToArray());

       //          ms.Close();

       //          return str;

       //      }

       //  }

       //  /// 

       //  /// 对字符串进行DES加密

       //  /// 

       //  /// 待加密的字符串

       //  /// 加密后的BASE64编码的字符串

       //  public string Encrypt(string sourceString)

       //{

       //   byte[] btKey = Encoding.UTF8.GetBytes(sKey);

       //   byte[] btIV = Encoding.UTF8.GetBytes(sKey);

       //    DESCryptoServiceProvider des = new DESCryptoServiceProvider();

       //    using (MemoryStream ms = new MemoryStream())

       //    {

       //        byte[] inData = Encoding.UTF8.GetBytes(sourceString);

       //        try

       //        {

       //            using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))

       //            {

       //                cs.Write(inData, 0, inData.Length);

       //                cs.FlushFinalBlock();

       //            }

       //            return Convert.ToBase64String(ms.ToArray());

       //        }

       //        catch

       //        {

       //            throw;

       //        }

       //    }

       //}

         #endregion  

 安卓---------------------------------------------------------------------------

     //    // 加密

     //public static String DecryptDoNet(String message, String key)

     //        throws Exception {

     //    byte[] bytesrc = Base64.decode(message.getBytes(), Base64.DEFAULT);

     //    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

     //    DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));

     //    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

     //    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

     //    IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));

     //    cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);

     //    byte[] retByte = cipher.doFinal(bytesrc);

     //    return new String(retByte);

     //}

     //// 解密

     //public static String EncryptAsDoNet(String message, String key)

     //        throws Exception {

     //    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

     //    DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));

     //    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

     //    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

     //    IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));

     //    cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);

     //    byte[] encryptbyte = cipher.doFinal(message.getBytes());

     //    return new String(Base64.encode(encryptbyte, Base64.DEFAULT));

     //}

 Ios --------------------------------------------------------------------------------------------------------------------\

 static const char* encryptWithKeyAndType(const char *text,CCOperation encryptOperation,char *key)
{
NSString *textString=[[NSString alloc]initWithCString:text encoding:NSUTF8StringEncoding];
// NSLog(@"[[item.url description] UTF8String=%@",textString);
const void *dataIn;
size_t dataInLength; if (encryptOperation == kCCDecrypt)//传递过来的是decrypt 解码
{
//解码 base64
NSData *decryptData = [GTMBase64 decodeData:[textString dataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode
dataInLength = [decryptData length];
dataIn = [decryptData bytes];
}
else //encrypt
{
NSData* encryptData = [textString dataUsingEncoding:NSUTF8StringEncoding];
dataInLength = [encryptData length];
dataIn = (const void *)[encryptData bytes];
} CCCryptorStatus ccStatus;
uint8_t *dataOut = NULL; //可以理解位type/typedef 的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义)
size_t dataOutAvailable = ; //size_t 是操作符sizeof返回的结果类型
size_t dataOutMoved = ; dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - );
dataOut = malloc( dataOutAvailable * sizeof(uint8_t));
memset((void *)dataOut, , dataOutAvailable);//将已开辟内存空间buffer的首 1 个字节的值设为值 0 //NSString *initIv = @"12345678";
const void *vkey = key;
const void *iv = (const void *) key; //[initIv UTF8String]; //CCCrypt函数 加密/解密
ccStatus = CCCrypt(encryptOperation,// 加密/解密
kCCAlgorithmDES,// 加密根据哪个标准(des,3des,aes。。。。)
kCCOptionPKCS7Padding,// 选项分组密码算法(des:对每块分组加一次密 3DES:对每块分组加三个不同的密)
vkey, //密钥 加密和解密的密钥必须一致
kCCKeySizeDES,// DES 密钥的大小(kCCKeySizeDES=8)
iv, // 可选的初始矢量
dataIn, // 数据的存储单元
dataInLength,// 数据的大小
(void *)dataOut,// 用于返回数据
dataOutAvailable,
&dataOutMoved); NSString *result = nil; if (encryptOperation == kCCDecrypt)//encryptOperation==1 解码
{
//得到解密出来的data数据,改变为utf-8的字符串
result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved] encoding:NSUTF8StringEncoding];
}
else //encryptOperation==0 (加密过程中,把加好密的数据转成base64的)
{
//编码 base64
NSData *data = [NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved];
result = [GTMBase64 stringByEncodingData:data];
} return [result UTF8String]; }
+(NSString*)encryptWithContent:(NSString*)content type:(CCOperation)type key:(NSString*)aKey
{
const char * contentChar =[content UTF8String];
char * keyChar =(char*)[aKey UTF8String];
const char *miChar;
miChar = encryptWithKeyAndType(contentChar, type, keyChar);
return [NSString stringWithCString:miChar encoding:NSUTF8StringEncoding];
}

.net 安卓IOS跨平台des加解密双向的(可以互相加解密)的更多相关文章

  1. 安卓ios和angularjs相互调用解决首次调用ios传递标题失败的问题

    1.angular 调用客户端方法放在 try catch中 try { js_invoke.showShareDialog(angular.toJson(obj));  // 在这里放客户端的方法即 ...

  2. 点击复制文字到剪贴板兼容性安卓ios

    一般那种活动H5分享可能会用到点击复制文字到剪贴板,很简单的功能 于是搜了一搜:js复制文字到剪贴板,可用结果大致分为两类: 一类是js原生方法,这种方法兼容性不好,不兼容ios: https://d ...

  3. 【IOS学习基础】weak和strong、懒加载、循环引用

    一.weak和strong 1.理解 刚开始学UI的时候,对于weak和strong的描述看得最多的就是“由ARC引入,weak相当于OC中的assign,但是weak用于修饰对象,但是他们都不会造成 ...

  4. 安卓ios各版本及分辨率占比

    Google Play 安装统计数据 只有安卓的 https://developer.android.com/about/dashboards/index.html?hl=zh-cn 腾讯移动分析 安 ...

  5. DES加密 java与.net可以相互加密解密两种方法

    DES加密 java与.net可以相互加密解密两种方法 https://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html sun.misc. ...

  6. 史上最简单JS复制功能,兼容安卓ios!

    1.JS复制原理: 被复制内容的元素不能被其他元素遮盖,否则无效.  (设置opacity透明为0,不可以设置display:none); 2.常规的复制方法 function copyUrl2() ...

  7. iOS圆形图片裁剪,以及原型图片外面加一个圆环

    废话不多说,直接上代码 #import "ViewController.h" @interface ViewController () @property (nonatomic,s ...

  8. iOS边练边学--plist文件,懒加载,模型初使用--补充instancetype

    一.什么是plist文件 1>将数据直接写在代码里面,不是一种合理的做法.如果数据经常修改,就要经常翻开对应的代码进行修改,造成代码扩展性低 2>因此,可以考虑将经常变得数据放在文件中进行 ...

  9. Hibernate之加载策略(延迟加载与即时加载)和抓取策略(fetch)

    假设现在有Book和Category两张表,表的关系为双向的一对多,表结构如下: 假设现在我想查询id为2的那本书的书名,使用session.get(...)方法: Session session=H ...

随机推荐

  1. 【HTML】Intermediate5:Definition Lists

    dl(defination list) dt(defination term) dd(defination description)

  2. Kooboo中怎么新增一个关联的Details 动态页面。

    Kooboo中怎么新增一个关联的Details 动态页面. 有几个要点: 1. Sub Page的Parent Page 必须是英文书写.如果是中文会出现找不到页面 500错误 2. 要在Page M ...

  3. Hadoop源码的编译过程详细解读(各版本)

    说在前面的话   重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...

  4. A Tour of Go Structs

    A struct is a collection of fields. (And a type declaration does what you'd expect.) package main im ...

  5. 几乎每个文件里面都有 #ifdef __cplusplus extern "C" { #endif 可我没找到程序里那个地方定义了__cplusplus 啊?这又是怎么回事呢?

    我们的C语言有个进化版,叫C++,这个想必楼主知道,Keil MDK是支持C++编程的,也就是说,你可以用C语言或者C++写你的程序,都可以. 但是,有一个问题,就是头文件的问题,C语言写的头文件C+ ...

  6. NSUserDefaults偶尔/有时候保存数据会失败/失效

    之前已经实现了通过NSUserDefaults去保存用户数据: [已解决]iPhone/iOS中保存自定义对象(Custom Object/Custom Class)的数组(NSMutableArra ...

  7. SIGGRAPH

    这两天看了一些文章,今天来说说SIGGRAPH. 对于搞图形学的人来说,SIGGRAPH绝对是如雷贯耳.SIGGRAPH是计算机图形界(也包含图像)最顶级的会议,没有之中的一个,是全世界的图形学者公认 ...

  8. Oracle VM Virtual 下CentOS不能自动获取IP地址

    在CentOS配置网卡开机自动获取IP地址: vi /etc/sysconfig/network-scripts/ifcfg-eth0 将 ONBOOT="no" 改为 ONBOO ...

  9. 使用phpize建立php扩展(Cannot find config.m4)(转)

    php源码:/root/soft/php-5.3.4php安装: /usr/local/php [root@ns root]# phpizeCannot find config.m4.Make sur ...

  10. careercup-树与图 4.5

    4.5 实现一个函数,检查一棵二叉树是否为二叉查找树. 参考:http://blog.csdn.net/sgbfblog/article/details/7771096 C++实现代码: #inclu ...