des加密 ios_ios des3加密和3des加密是一样的吗 - CSDN
  • 最近有人在群中问我des加密的事,告诉我网上的将des的资料很少. 会者不难,难着不会. 二,代码呈现(Demo在本文最后). 在做des加密,解密时,你需要和服务端约定2个字段. 第一个字段:比如"xxxx" 这个字段和做图片上传约定...

    一,说明

    最近有人在群中问我des加密的事,告诉我网上的将des的资料很少. 会者不难,难着不会.

    二,代码呈现(Demo在本文最后).

    在做des加密,解密时,你需要和服务端约定2个字段.  
    第一个字段:比如"xxxx"  这个字段和做图片上传约定的字段一个道理, 便于服务器唯一识别;
    第二个字段:为iV[ ]  这个字段会在下图,及Demo中标注出来.

    导入:

    #import <CommonCrypto/CommonDigest.h>

    #import <CommonCrypto/CommonCryptor.h>

    #import "GTMBase64.h"


    由于GTMBase64是MRC,所以:要添加 -fno-objc-arc



    代码呈现:
    /*字符串加密
     *参数
     *plainText : 加密明文
     *key        : 密钥 64位 为和后台约定的字段示例为xxxx
     */
    + (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key
    {
        NSString *ciphertext = nil;
        const char *textBytes = [plainText UTF8String];
        NSUInteger dataLength = [plainText length];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        Byte iv[] = { 0x12, 0x34, 0x56, 0x78,  0x90,  0xAB,  0xCD,  0xEF };
        //注:iv[] = { 0x12, 0x34, 0x56, 0x78,  0x90,  0xAB,  0xCD,  0xEF }为移动端和后台约定的字段
        size_t numBytesEncrypted = 0;
        CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
                                              kCCOptionPKCS7Padding,
                                              [key UTF8String], kCCKeySizeDES,
                                              iv,
                                              textBytes, dataLength,
                                              buffer, 1024,
                                              &numBytesEncrypted);
        if (cryptStatus == kCCSuccess) {
            NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
            
            ciphertext = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding];
        }
        return ciphertext;
    }
    //解密
    + (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key
    {
        NSData* cipherData = [GTMBase64 decodeString:cipherText];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        size_t numBytesDecrypted = 0;
        Byte iv[] = { 0x12, 0x34, 0x56, 0x78,  0x90,  0xAB,  0xCD,  0xEF };
        //注:iv[] = { 0x12, 0x34, 0x56, 0x78,  0x90,  0xAB,  0xCD,  0xEF }为移动端和后台约定的字段
        CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                              kCCAlgorithmDES,
                                              kCCOptionPKCS7Padding,
                                              [key UTF8String],
                                              kCCKeySizeDES,
                                              iv,
                                              [cipherData bytes],
                                              [cipherData length],
                                              buffer,
                                              1024,
                                              &numBytesDecrypted);
        NSString* plainText = nil;
        if (cryptStatus == kCCSuccess) {
            NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];
            plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        }
        return plainText;
    }

    三,DES加密出现的问题及Demo地址.

     1,我曾将手机号DES加密成字符串,上传到服务器,发现有一些手机号加密后的字段有加号("+") 服务端会将加号转为空格  ,导致解密不出来. 那么解决方法是:给des加密后的字符串进行url编码, 再上传服务器.
    2,Des加密数组是出现过丢失的情况,请看我这篇文章:iOS之POST请求数组样式参数DES加密问题
    展开全文
  • 首先是JAVA端的加密工具类,它同样适用于Android...iOS端 代码 iOS端的加密工具类中引入了“GTMBase64.h”,下面 我写的demo里面 有该类。。 #import  @interface DES3Util : NSObject { } // 加密方法 + (NSS


    首先是JAVA端的加密工具类,它同样适用于Android端,无需任何修改,即可保证Java与Android端的加解密一致,并且中文不会乱码。我经过和IOS共同测试,是没有问题的大笑

    iOS端  代码       iOS端的加密工具类中引入了“GTMBase64.h”,下面 我写的demo里面 有该类。。

    #import 
    
    @interface DES3Util : NSObject {
    
    }
    
    // 加密方法
    
    + (NSString*)encrypt:(NSString*)plainText;
    
    // 解密方法
    
    + (NSString*)decrypt:(NSString*)encryptText;
    
    @end
    
    #import"DES3Util.h"
    
    #import
    
    #import"GTMBase64.h"
    
    #define gkey@"Mozhe@lx100$#365#$"
    
    #define gIv@"01234567"
    
    @implementationDES3Util
    
    //加密方法
    
    + (NSString*)encrypt:(NSString*)plainText {
    
    NSData* data = [plainTextdataUsingEncoding:NSUTF8StringEncoding];
    
    size_tplainTextBufferSize = [datalength];
    
    constvoid*vplainText = (constvoid*)[databytes];
    
    CCCryptorStatusccStatus;
    
    uint8_t*bufferPtr =NULL;
    
    size_tbufferPtrSize =0;
    
    size_tmovedBytes =0;
    
    bufferPtrSize = (plainTextBufferSize +kCCBlockSize3DES) & ~(kCCBlockSize3DES-1);
    
    bufferPtr =malloc( bufferPtrSize *sizeof(uint8_t));
    
    memset((void*)bufferPtr,0x0, bufferPtrSize);
    
    constvoid*vkey = (constvoid*) [gkeyUTF8String];
    
    constvoid*vinitVec = (constvoid*) [gIvUTF8String];
    
    ccStatus =CCCrypt(kCCEncrypt,
    
    kCCAlgorithm3DES,
    
    kCCOptionPKCS7Padding,
    
    vkey,
    
    kCCKeySize3DES,
    
    vinitVec,
    
    vplainText,
    
    plainTextBufferSize,
    
    (void*)bufferPtr,
    
    bufferPtrSize,
    
    &movedBytes);
    
    NSData*myData = [NSDatadataWithBytes:(constvoid*)bufferPtrlength:(NSUInteger)movedBytes];
    
    NSString*result = [GTMBase64stringByEncodingData:myData];
    
    returnresult;
    
    }
    
    //解密方法
    
    + (NSString*)decrypt:(NSString*)encryptText {
    
    NSData*encryptData = [GTMBase64decodeData:[encryptTextdataUsingEncoding:NSUTF8StringEncoding]];
    
    size_tplainTextBufferSize = [encryptDatalength];
    
    constvoid*vplainText = [encryptDatabytes];
    
    CCCryptorStatusccStatus;
    
    uint8_t*bufferPtr =NULL;
    
    size_tbufferPtrSize =0;
    
    size_tmovedBytes =0;
    
    bufferPtrSize = (plainTextBufferSize +kCCBlockSize3DES) & ~(kCCBlockSize3DES-1);
    
    bufferPtr =malloc( bufferPtrSize *sizeof(uint8_t));
    
    memset((void*)bufferPtr,0x0, bufferPtrSize);
    
    constvoid*vkey = (constvoid*) [gkeyUTF8String];
    
    constvoid*vinitVec = (constvoid*) [gIvUTF8String];
    
    ccStatus =CCCrypt(kCCDecrypt,
    
    kCCAlgorithm3DES,
    
    kCCOptionPKCS7Padding,
    
    vkey,
    
    kCCKeySize3DES,
    
    vinitVec,
    
    vplainText,
    
    plainTextBufferSize,
    
    (void*)bufferPtr,
    
    bufferPtrSize,
    
    &movedBytes);
    
    NSString*result = [[NSStringalloc]initWithData:[NSDatadataWithBytes:(constvoid*)bufferPtr
    
    length:(NSUInteger)movedBytes]encoding:NSUTF8StringEncoding];
    
    returnresult;
    
    }
    
    @end
    



    Java端

    package encrypt;
    
    import java.security.Key;
    
    import javax.crypto.Cipher;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    import javax.crypto.spec.IvParameterSpec;
    
    public class Des3 {
    	// 密钥
    
    	private final static String secretKey = "liuyunqiang@lx100$#365#$";
    
    
    	// 向量
    
    	private final static String iv = "01234567";
    
    	// 加解密统一使用的编码方式
    
    	private final static String encoding = "utf-8";
    
    	/**
    	 * 
    	 * 3DES加密
    	 * 
    	 *
    	 * 
    	 * @param plainText
    	 *            普通文本
    	 * 
    	 * @return
    	 * 
    	 * @throws Exception
    	 */
    
    	public static String encode(String plainText) throws Exception {
    
    		Key deskey = null;
    
    		DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());
    
    		SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
    
    		deskey = keyfactory.generateSecret(spec);
    
    		Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");
    
    		IvParameterSpec ips = new IvParameterSpec(iv.getBytes());
    
    		cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
    
    		byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));
    
    		return Base64.encode(encryptData);
    
    	}
    
    	/**
    	 * 
    	 * 3DES解密
    	 * 
    	 *
    	 * 
    	 * @param encryptText
    	 *            加密文本
    	 * 
    	 * @return
    	 * 
    	 * @throws Exception
    	 */
    
    	public static String decode(String encryptText) throws Exception {
    
    		Key deskey = null;
    
    		DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());
    
    		SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
    
    		deskey = keyfactory.generateSecret(spec);
    
    		Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");
    
    		IvParameterSpec ips = new IvParameterSpec(iv.getBytes());
    
    		cipher.init(Cipher.DECRYPT_MODE, deskey, ips);
    
    		byte[] decryptData = cipher.doFinal(Base642.decode(encryptText));
    
    		return new String(decryptData, encoding);
    
    	}
    	public static void main(String[] args) throws Exception {
    	
    		String tt="测试";
    		
    		System.out.println(encode(tt));
    		System.out.println(decode(encode(tt)));
    	}
    
    }
    

    上面的加密工具类会使用到Base64这个类,该类的源代码如下:

    package encrypt;
    
    public class Base64 {
    
    	private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    
    	.toCharArray();
    
    	public static String encode(byte[] data) {
    
    		int start = 0;
    
    		int len = data.length;
    
    		StringBuffer buf = new StringBuffer(data.length * 3 / 2);
    
    		int end = len - 3;
    
    		int i = start;
    
    		int n = 0;
    
    		while (i <= end) {
    
    			int d = ((((int) data[i]) & 0x0ff) << 16)
    
    			| ((((int) data[i + 1]) & 0x0ff) << 8)
    
    			| (((int) data[i + 2]) & 0x0ff);
    
    			buf.append(legalChars[(d >> 18) & 63]);
    
    			buf.append(legalChars[(d >> 12) & 63]);
    
    			buf.append(legalChars[(d >> 6) & 63]);
    
    			buf.append(legalChars[d & 63]);
    
    			i += 3;
    
    			if (n++ >= 14) {
    
    				n = 0;
    
    				buf.append(" ");
    
    			}
    
    		}
    
    		if (i == start + len - 2) {
    
    			int d = ((((int) data[i]) & 0x0ff) << 16)
    
    			| ((((int) data[i + 1]) & 255) << 8);
    
    			buf.append(legalChars[(d >> 18) & 63]);
    
    			buf.append(legalChars[(d >> 12) & 63]);
    
    			buf.append(legalChars[(d >> 6) & 63]);
    
    			buf.append("=");
    
    		} else if (i == start + len - 1) {
    
    			int d = (((int) data[i]) & 0x0ff) << 16;
    
    			buf.append(legalChars[(d >> 18) & 63]);
    
    			buf.append(legalChars[(d >> 12) & 63]);
    
    			buf.append("==");
    
    		}
    
    		return buf.toString();
    
    	}
    
    }
    

    #import
    
    @interfaceDES3Util :NSObject
    
    //加密方法
    
    + (NSString*)encrypt:(NSString*)plainText;
    
    //解密方法
    
    + (NSString*)decrypt:(NSString*)encryptText;
    
    @end#import
    
    @interfaceDES3Util :NSObject
    
    //加密方法
    
    + (NSString*)encrypt:(NSString*)plainText;
    
    //解密方法
    
    + (NSString*)decrypt:(NSString*)encryptText;
    
    @end
    
    
    
    作者:默着
    链接:http://www.jianshu.com/p/630e5899582d
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    
    展开全文
  • iosDES加密

    2016-09-11 15:27:19
    应用场景: 保存一些nsstring不希望别人看到,就简单加密,提取时解密 ...ios7之后自己支持了base64的转码,所以不要再引入一个库了 将h和m文件贴到如下 h文件 // // DESTool.h // testDES // // Creat

    应用场景:

    保存一些nsstring不希望别人看到,就简单加密,提取时解密

    加密的原理看这里点击打开链接


    新建一个DESTool的类,使用方便,不使用

    开源库 GTMBase64 转码

    ios7之后自己支持了base64的转码,所以不要再引入一个库了

    将h和m文件贴到如下

    h文件

    //
    //  DESTool.h
    //  testDES
    //
    //  Created by apple on 16/9/11.
    //  Copyright © 2016年 apple. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface DESTool : NSObject
    
    + (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key;
    
    + (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key;
    
    @end
    

    m文件

    //
    //  DESTool.m
    //  testDES
    //
    //  Created by apple on 16/9/11.
    //  Copyright © 2016年 apple. All rights reserved.
    //
    
    #import "DESTool.h"
    #import <CommonCrypto/CommonCryptor.h>
    
    @implementation DESTool
    
    /*字符串加密
     *参数
     *plainText : 加密明文
     *key        : 密钥 64位
     */
    + (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key
    {
        NSString *ciphertext = nil;
        const char *textBytes = [plainText UTF8String];
        NSUInteger dataLength = [plainText length];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        Byte iv[] = {1,2,3,4,5,6,7,8};
        size_t numBytesEncrypted = 0;
        CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
                                              kCCOptionPKCS7Padding|kCCOptionECBMode,
                                              [key UTF8String], kCCKeySizeDES,
                                              iv,
                                              textBytes, dataLength,
                                              buffer, 1024,
                                              &numBytesEncrypted);
        if (cryptStatus == kCCSuccess) {
            NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
            
            ciphertext = [self encodeData:data];
        }
        return ciphertext;
    }
    
    //解密
    + (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key
    {
        NSData* cipherData = [self decodeString:cipherText];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        size_t numBytesDecrypted = 0;
        Byte iv[] = {1,2,3,4,5,6,7,8};
        CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                              kCCAlgorithmDES,
                                              kCCOptionPKCS7Padding|kCCOptionECBMode,
                                              [key UTF8String],
                                              kCCKeySizeDES,
                                              iv,
                                              [cipherData bytes],
                                              [cipherData length],
                                              buffer,
                                              1024,
                                              &numBytesDecrypted);
        NSString* plainText = nil;
        if (cryptStatus == kCCSuccess) {
            NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];
            plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        }
        return plainText;
    }
    
    + (NSString *)encodeData:(NSData *)originData{
        
        NSString* encodeResult = [originData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
        //    NSString* encodeResult = [originData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
        return encodeResult;
    }
    + (NSData *)decodeString:(NSString *)encodeResult{
        
        NSData* decodeData = [[NSData alloc] initWithBase64EncodedString:encodeResult options:0];
        //    NSString* decodeStr = [[NSString alloc] initWithData:decodeData encoding:NSASCIIStringEncoding];
        return decodeData;
    }
    
    @end
    


    展开全文
  • 所以自然而然用到了DES加解密。但是问题随之而来了,我们后台是C#做的,客户端有我们Android和IOS,所以我们之间要相互都能解析才能沟通。所以、就是接下来的解决方法啦! Android端加解密: /** * 加密 * @...

           公司项目需要,聊天的时候不想明文传输,需要对话双方各有一个密钥,才能解开发送的密文信息!所以自然而然用到了DES加解密。但是问题随之而来了,我们后台是C#做的,客户端有我们Android和IOS,所以我们之间要相互都能解析才能沟通。所以、就是接下来的解决方法啦!


    Android端加解密:

    /**
     * 加密
     * @param message  原文
     * @param key    密钥
     * @return
     * @throws Exception
     */
    	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));
    	        
    	    }
    	
    /**
     * 解密
     * @param message 密文
     * @param key   密钥
     * @return
     * @throws Exception
     */
        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);
            
        }
     
    

     

    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 = 0; //size_t  是操作符sizeof返回的结果类型
        size_t dataOutMoved = 0;
        
        dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);
        dataOut = malloc( dataOutAvailable * sizeof(uint8_t));
        memset((void *)dataOut, 00, 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];
    }
    



    C#端加解密:

    #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  


    参考资料:http://zhidao.baidu.com/link?url=ymdSUCnD9swHbPGdMTeMLmDW5crg7z6lv97J39wLbOrOozbibxg7vuUIKObKxRsZQ9t744yDH4PxbZYglURW8l159aAoOpm1gwnFl0GpqsG&qq-pf-to=pcqq.c2c


    结合理解:http://www.cnblogs.com/whoislcj/p/5580950.html

    展开全文
  • iOS DES加密的例子

    2013-12-24 16:46:23
    最近的项目涉及到DES加密解密方面的内容,在网上搜到了这个例子比较好。分享一下。这个例子中唯一的缺点是OC与JAVA下,加密带中文的名文时,两个平台的密文不一致。这个问题我还没有解决。 ...
  • des加密java-ios.zip

    2020-06-01 23:32:50
    des加密java-ios.zip博客地址http://blog.csdn.net/mengxiangyue/article/details/40015727
  • IOS常用加密技术有三种:3DES、SHA1和MD5。其中,对称加密技术有:3DES和SHA1;...本篇介绍的是3DES加密解密技术: 1、创建HeaderFile文件My3DES.h。然后,添加以下代码,引用相关的头文件: #import <CommonC...
  • iOS下的DES加密

    2016-08-29 09:53:38
    今天终于把iOS平台下的DES加密算法调通了,在这里记录一下。说一下我遇到的问题吧。   第一,关于传参,Objective-C和C,C++一样,不能把值类型数组做为参数,传给另一个方法,方法的返回值的类型也一样不...
  • IOS、java支持DES加密

    2014-10-12 10:28:11
    现在我们需要实现的是移动端和后台(java)数据加解密的配合,开始的时候考虑的使用RSA,因为RSA是非对称加密,更加安全点,但是RSA加密的过程中,ios公钥加密的数据,后台java是能够解密成功,但是后台java私钥加密...
  • 要理解3DES,就必须先...这里需要注意的是,由于DES加密解密时要求数据长度必须为8个字节的倍数,因此当数据长度不足时必须先进行数据填充,这里使用的填充算法根据系统的不同可能会略有不同。 DES算法有两种工作
  • 对称加密算法 3desiOS 客户端加密算法 首先进入头文件: #import #import #import -(NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt { const void ...
  • iOS DES加密和解密

    2016-11-09 17:46:15
    这里写代码//加密 - (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key { NSString *ciphertext = nil; const char *textBytes = [plainText UTF8String]; NSUInteger dataLength = [plain
  • iOS-OC-3DES加密和解密

    2020-01-05 21:23:22
    + (NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt { const void *vplainText; size_t plainTextBufferSize; if (encryptOrDecrypt == kCCDecrypt)//解...
  • android端的加密代码:public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding";private static String encode(String key, byte[] data) throws Exception { try { DESKeySpec dks = new DESKeySpe
  • 我对应着Java上解密方法找到一些适合iOS的DES加解密算法,特总结一下1、使用DES加密://加密 +(NSString *) encryptUseDES2:(NSString *)plainText key:(NSString *)key{ NSString *ciphertext = nil; const char ...
  • c# 跟IOS DES 加密问题

    2019-05-03 00:58:36
    c# 跟IOS DES 加密问题 一、ios 加密代码+(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key{NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossy...
  • 是用Java开发的,客户端要同时支持多平台(Android、iOS),在处理iOSDES加密的时候遇到了一些问题,起初 怎么调都调不成和Android端生成的密文相同。最终一个忽然的想法让我找到了问题的所在,现在将代码总结...
  • 因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户端调用同样的Web Service接口,为了数据安全考虑,要对数据进行加密。头疼的问题就来了,很难编写出一套加密程序,在3个平台间加解密的结果一致,...
  • 转载地址:https://www.cnblogs.com/innchina/p/5066396.html引言 如今手机app五彩缤纷...DES加密是目前最常用的对称加密方式,性能优于非对称加密(RSA),是手机app请求数据加密的优先选择。 DES简介: DES全称...
  • iOS的3DES加密写法

    2017-01-20 15:22:02
     加密    */ + (NSString *)encrypt3DES:(NSString *)src key:(NSString *)key{  const void *vplainText;  size_t plainTextBufferSize;  NSData* data = [src dataUsingEnc
1 2 3 4 5 ... 20
收藏数 2,938
精华内容 1,175
关键字:

des加密 ios