ios采用自带库加密解密,及php平台、java平台(andriod)数据加密解密的调试

孤者浪人 提交于 2020-03-21 10:25:10
IOS:引入ios自带库 #include
  
     先以DES加密算法为例讲解,DES的加密和解密都同用一个Key,下面两个加解密函数如下:
//加密
-(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key
{
    //一般对加密的字符串采用UTF-8编码  NSData存储的就是二进制数据
    NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    //See the doc: For block ciphers, the output size will always be less than or
    //equal to the input size plus the size of one block.
    //确定加密过后的字符串在内存中存放的大小,根据文档,对于块密码方式(这个库还包括流密码方式)
    //加密过后的字符串大小总是小于或等于加密之前数据的大小加上对应加密算法的块大小
    //但看到一些大牛还这样一下 & ~(kCCBlockSizeDES - 1) 目前不知道为嘛
    size_t bufferSize = ([data length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);
    //void *buffer = malloc(bufferSize);//可以手动创建buffer,但之后要记得free掉
    unsigned char buffer[bufferSize]; //定义输出加密串所占内存空间
    memset(buffer, 0, sizeof(char));  //采用ios中宏定义好的方法分配空间,可免去手动free
    size_t numBytesEncrypted = 0;    //输出加密串的字节数
   
    //加密数据,采用库中的CCCrypt方法,这个方法会按次序执行CCCrytorCreate(),
    // CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease() 如果开发者自己create这个对象,
    //那么后面就必须执行final、release之类的函数,CCCrypt方法一次性解决

    // Byte iv[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
   //Byte iv[] = {1,2,3,4,5,6,7,8}; 加密所需的随机字符
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,    //加密方式,kCCEncrypt加密  kCCDecrypt解密
                                          kCCAlgorithmDES, //采用的加密算法,内置包含AES、DES、
                                                           //3DES、其他还有四个,不知道是什么
                                                           //后续讨论
                            
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!