#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. 五指CMS发布1.4版本,更多的新功能

    五指cms v1.4变更: 新增内容手动分页新增百度地图新增订单管理模块新增订单地址管理增加Microsoft YaHei字体新增推广邀请模块新增私密下载,下载函数 新增百度地图新增筛选功能 修正全局 ...

  2. Mysql常用操作记录

    在linux平台中相关的MySql操作 打开Mysql mysql -uroot -p  //-u后边为用户名,-p后边为密码    1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql& ...

  3. BOM 和 JavaScript 中的 trim

    今天遇到一个 IE7 下 JSON.parse 失败的问题.经过排查发现:服务端某个配置文件编码是 UTF-8 + BOM,输出的字符串最开始包含了 BOM 字符,不是合法的 JSON. IE7 不支 ...

  4. JavaScript Garden2

    Types Equality and Comparisons JavaScript has two different ways of comparing the values of objects ...

  5. 理解screenX clientX pageX概念

    先了解screenX,clientX,pageX概念 screenX: 鼠标位置相对于用户屏幕水平偏移量,而screenY就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX: 跟s ...

  6. redis整合spring @Bean写法

    jedis是一款java连接redis的客户端,spring基于jedis进行了封装,提供了简洁的操作redis的方法. 使用maven进行管理jar包之间的依赖: <dependency> ...

  7. PowerShell优化和性能测试

    measure-command -expression {$null = "abc"}  效率高于 {"abc" |out-null } foreach {$p ...

  8. 判断richtextbox选中的是否为图片

    ) { Text = "Img"; } else { Text = "Form1"; }

  9. [React Native] Basic iOS Routing -- NavigatorIOS

    Inside the app component, we use NavigatiorIOS to render the compoent: class githubnotetaker extends ...

  10. kcachegrind gui for callgrind

    DocumentationScreenshotsDownload/SourcesLinksRoadmapBugs & Wishes This is the homepage of the pr ...