精华内容
下载资源
问答
  • ios 加密

    2018-06-11 13:14:03
    -- 对称AESDES3DES-- 非对称- 公钥加密 - 私钥解密- 私钥加密 - 公钥解密安全讲 非对称好,但是性能差 ,所以加密关键数据 - 数据的校验时使用Base64(编码)-->作用 将加密的结果转成字符串 (可编码 可解码)-- ...
    -- 对称
    
    AES
    DES
    3DES


    -- 非对称
    - 公钥加密 - 私钥解密
    - 私钥加密 - 公钥解密


    安全讲 非对称好,但是性能差 ,所以加密关键数据 - 数据的校验时使用


    Base64(编码)-->作用 将加密的结果转成字符串 (可编码 可解码)


    -- 散列 (哈希) 算法
    - 算法公开
    - 不可逆
    MD5 --> 不同的数据加密后的结果是定长的, 32个字符
    - 散列碰撞 不同的数据得到相同的HASH值


    开发中 客户端 密码加密 用 哈希 值
    和 HMAC


    kCCHmacAlgMd5 // 使用一个秘钥(秘钥来自服务器,一个账号一个秘钥)加密数据 并进行两次散列
    展开全文
  • iOS加密工具

    2015-11-09 18:52:06
    iOS加密工具
  • IRCrypto-iOS加密库警告:我不是加密专家,此库尚未由加密专家审查(并且可能永远不会发生),使用后果自负。概述IRCrypto旨在提供IRCrypto-iOS加密库警告:我由于不是密码学家,因此该库尚未经过密码专家的审查...
  • AES-For-JAVA aes加密,大部分时候会出现ios加密和java服务器加密结果不一样,结合RSA_AES_For_iOS一同使用 密码0123456789abcdef
加密字段1加密结果:2yPBJGtAg/AfuvT8idAmzw==
  • SETOCryptomatorCryptor是一个用于访问Cryptomator保管库的iOS加密库。 有关安全性详细信息,请访问 。 要求 iOS 8.0或更高版本 ARC已启用 安装 在您的应用程序中使用SETOCryptomatorCryptor的最简单方法是通过 。 ...
  • IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密
  • iOS加密方法

    2015-11-30 10:17:26
    下载文件为压缩文件,压缩内容有iOS中常用的RSA & AES & DES&MD5&Base64等5中加密算法相关的demo。
  • monero-ios-lib:WooKeyWallet:iOS加密货币钱包
  • iOS加密算法

    2017-02-22 15:49:24
    iOS大部分的加密
  • iOS加密解密大全(MD5,SHA,Base64等) Encrypt/Decrypt: AES. Hash: MD5, SHA(SHA1, SHA224, SHA256, SHA384, SHA512). Encode/Decode: Base64, Hex.
  • java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密
  • NULL 博文链接:https://sgm881218.iteye.com/blog/1831756
  • iOS国密sm2加密、签名

    2020-02-25 14:30:02
    最近公司要求使用国密sm2加密、签名,在网上找了好多,要么加密好用,要么签名好用,搞了半个月,很难受,终于完成了
  • iOS加密:AES

    千次阅读 2017-12-29 16:50:47
    关于iOS部分加密算法简单介绍做过的项目中使用过的加密算法: RSA AES MD5 AES:对称加密算法 AES是一种对称加密算法,加密和解密密钥为同一个,密钥的长度最少支持为128、192、256,分组长度128位。 关键代码//...

    AES:对称加密算法

    AES是一种对称加密算法,加密和解密密钥为同一个,密钥的长度最少支持为128、192、256,分组长度128位。

    我们项目中是AES加密完成之后再用Base64加密一下,所以解密的时候就需要先解密Base64,再进行AES解密,Base64这步并不是必须的。

    关键代码

    //定义加密密钥长度类型
    typedef NS_ENUM(NSInteger, AESType) {
        AES128 = 0,
        AES192,
        AES256
    };
    
    //AES加密实现
    + (NSString *)aesEncrypt:(NSString *)string key:(NSString *)key {
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        NSData * result = [self aes:data key:key mode:kCCEncrypt type:AES128];
        if (result.length == 0) {return @"";}
        NSString *resultStr = nil;
        NSData * aesData = [NSData dataWithBytes:(const void *)result.bytes length:result.length];
        NSData *tmpData = [aesData base64EncodedDataWithOptions:0];
        resultStr = [[NSString alloc] initWithData:tmpData encoding:NSUTF8StringEncoding];;
        if (resultStr.length == 0) {return @"";}
        return resultStr;
    }
    //AES解密
    + (NSString *)aesDecrypt:(NSString *)string key:(NSString *)key {
        NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters];
        NSData* result = [self aes:data key:key mode:kCCDecrypt type:AES128];
        NSString * resultStr = nil;
        if (result.length == 0) {return @"";}
        resultStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
        if (resultStr.length == 0) {return @"";}
        return resultStr;
    }
    //加解密算法实现
    + (NSData *)aes:(NSData *)data key:(NSString *)key mode:(CCOperation)operation type:(AESType)type {
        NSInteger size;
        switch (type) {
            case AES128:
                size = kCCKeySizeAES128;
                break;
            case AES192: {
                size = kCCKeySizeAES192;
            }
                break;
            case AES256: {
                size = kCCKeySizeAES256;
            }
                break;
            default:
                size = kCCKeySizeAES128;
                break;
        }
        char keyPtr[size + 1];
        bzero(keyPtr, sizeof(keyPtr));
        [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
        NSUInteger dataLength = data.length;
        size_t bufferSize = dataLength + kCCBlockSizeAES128;
        void * buffer = malloc(bufferSize);
        size_t numBytesDecrypted = 0;
        NSString * initIv = [self iv];
        char ivPtr[size + 1];
        memset(ivPtr, 0, sizeof(ivPtr));
        [initIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
        NSData * result;
        CCCryptorStatus cryptStatus = CCCrypt(operation,
                                              kCCAlgorithmAES128,
                                              kCCOptionPKCS7Padding,
                                              keyPtr,
                                              size,
                                              ivPtr,
                                              data.bytes,
                                              dataLength,
                                              buffer,
                                              bufferSize,
                                              &numBytesDecrypted);
        if (cryptStatus == kCCSuccess) {
            result = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
            return result;
    
        } else {
            free(buffer);
            return nil;
        }
    }
    
    //偏移量
    + (NSString *)iv {
        if (self.aesType == AES128) {
            return @"8841054029634287";
        }
        if (self.aesType == AES192) {
            return @"884105402963428788410540";
        }
        if (self.aesType == AES256) {
            return @"88410540296342878841054029634287";
        }
        return @"";
    }
    

    源码下载链接

    展开全文
  • IOS加密方式

    千次阅读 2016-06-12 08:59:20
    参考 :加密的基本原理 参考:http://jingyan.baidu.com/article/fedf07375d695e35ac89772c.html 参考:http://www.bkjia.com/IOSjc/997994.html 1>网络数据安全加密(MD5) 提交用户的隐私数据 一定要...

    参考 :加密的基本原理

    参考:http://jingyan.baidu.com/article/fedf07375d695e35ac89772c.html

    参考:http://www.bkjia.com/IOSjc/997994.html


    1>网络数据安全加密(MD5)


    提交用户的隐私数据

    一定要使用POST请求提交用户的隐私数据
    GET请求的所有参数都直接暴露在URL中
    请求的URL一般会记录在服务器的访问日志中
    服务器的访问日志是黑客攻击的重点对象之一

    用户的隐私数据
    登录密码
    银行账号
    … …

    数据安全

    仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题
    可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据
    因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交

    常见的加密算法

    MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES

    加密算法的选择
    一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密

    MD5加密

    什么是MD5
    全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”
    效果:对输入信息生成唯一的128位散列值(32个字符)

    MD5的特点
    输入两个不同的明文不会得到相同的输出值
    根据输出值,不能得到原始的明文,即其过程不可逆

    MD5的应用
    由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用
    主要运用在数字签名、文件完整性验证以及口令加密等方面

    MD5解密网站:http://www.cmd5.com

    MD5改进

    现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度
    加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5
    先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序
    … …
    总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文

    网络数据加密方案

    1> 加密对象:隐私数据,比如密码、银行信息
    2> 加密方案
    * 提交隐私数据,必须用POST请求
    * 使用加密算法对隐私数据进行加密,比如MD5
    3> 加密增强:为了加大破解的难度
    * 对明文进行2次MD5 : MD5(MD5( pass))?先对明文撒盐,再进行MD5:MD5( pass.$salt)

    2.本地存储加密
    1> 加密对象:重要的数据,比如游戏数据

    3.代码安全问题
    1> 现在已经有工具和技术能反编译出源代码:逆向工程
    * 反编译出来的都是纯C语言的,可读性不高
    * 最起码能知道源代码里面用的是哪些框架

    2> 参考书籍:《iOS逆向工程》

    3> 解决方案:发布之前对代码进行混淆
    * 混淆之前

    @interface HMPerson :NSObject
    - (void)run;
    - (void)eat;
    @end
    混淆之后
    @interface A :NSObject
    - (void)a;
    - (void)b;
    @end

    MD5加密实例

    导入加密文件
    这里写图片描述

    #import "ViewController.h"
    #import "MBProgressHUD.h"
    #import "NSString+Hash.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UITextField *username;
    @property (weak, nonatomic) IBOutlet UITextField *pwd;
    - (IBAction)login;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        [self.view endEditing:YES];
    }
    
    - (IBAction)login {
        // 1.用户名
        NSString *usernameText = self.username.text;
        if (usernameText.length == 0) {
            [MBProgressHUD showError:@"请输入用户名"];
            return;
        }
    
        // 2.密码
        NSString *pwdText = self.pwd.text;
        if (pwdText.length == 0) {
            [MBProgressHUD showError:@"请输入密码"];
            return;
        }
    
        // 增加蒙板
        [MBProgressHUD showMessage:@"正在拼命登录中...."];
    
        // 3.发送用户名和密码给服务器(走HTTP协议)
        // 创建一个URL : 请求路径
        NSURL *url = [NSURL URLWithString:@"http://218.83.161.124:8080/job/login"];
    
        // 创建一个请求
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
        // 5秒后算请求超时(默认60s超时)
        request.timeoutInterval = 15;
    
        request.HTTPMethod = @"POST";
    
    #warning 对pwdText进行加密
        pwdText = [self MD5Reorder:pwdText];
    
        // 设置请求体
        NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];
    
        NSLog(@"%@", param);
    
        // NSString --> NSData
        request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
    
        // 设置请求头信息
        [request setValue:@"iPhone 6" forHTTPHeaderField:@"User-Agent"];
    
        // 发送一个同步请求(在主线程发送请求)
        // queue :存放completionHandler这个任务
        NSOperationQueue *queue = [NSOperationQueue mainQueue];
        [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:
         ^(NSURLResponse *response, NSData *data, NSError *connectionError) {
             // 隐藏蒙板
             [MBProgressHUD hideHUD];
    
            // 这个block会在请求完毕的时候自动调用
            if (connectionError || data == nil) { // 一般请求超时就会来到这
                [MBProgressHUD showError:@"请求失败"];
                return;
            }
    
            // 解析服务器返回的JSON数据
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
            NSString *error = dict[@"error"];
            if (error) {
                [MBProgressHUD showError:error];
            } else {
                NSString *success = dict[@"success"];
                [MBProgressHUD showSuccess:success];
            }
         }];
    }
    
    /**
     *  MD5($pass.$salt)
     *
     *  @param text 明文
     *
     *  @return 加密后的密文
     */
    - (NSString *)MD5Salt:(NSString *)text
    {
        // 撒盐:随机地往明文中插入任意字符串
        NSString *salt = [text stringByAppendingString:@"aaa"];
        return [salt md5String];
    }
    
    /**
     *  MD5(MD5($pass))
     *
     *  @param text 明文
     *
     *  @return 加密后的密文
     */
    - (NSString *)doubleMD5:(NSString *)text
    {
        return [[text md5String] md5String];
    }
    
    /**
     *  先加密,后乱序
     *
     *  @param text 明文
     *
     *  @return 加密后的密文
     */
    - (NSString *)MD5Reorder:(NSString *)text
    {
        NSString *pwd = [text md5String];
    
        // 加密后pwd == 3f853778a951fd2cdf34dfd16504c5d8
        NSString *prefix = [pwd substringFromIndex:2];
        NSString *subfix = [pwd substringToIndex:2];
    
        // 乱序后 result == 853778a951fd2cdf34dfd16504c5d83f
        NSString *result = [prefix stringByAppendingString:subfix];
    
        NSLog(@"\ntext=%@\npwd=%@\nresult=%@", text, pwd, result);
    
        return result;
    }
    @end

    2>AES加密iOS代码加密

    1. 1

      AES加密iOS代码加密使用方法

      //  AES加密

          NSString *encryptedData = [AESCrypt encrypt:userName password:password];//加密

          NSString *message = [AESCrypt decrypt:encryptedData password:password]; //解密

          NSLog(@"加密结果 = %@",encryptedData);

          NSLog(@"解密结果 = %@",message);

      END

    3>BASE64加密iOS代码加密

    1. 1

      BASE64加密iOS代码加密添加如下方法

      .h

      + (NSString*)encodeBase64String:(NSString *)input;

      + (NSString*)decodeBase64String:(NSString *)input;

      + (NSString*)encodeBase64Data:(NSData *)data;

      + (NSString*)decodeBase64Data:(NSData *)data;

    2. 2

      .m

      + (NSString*)encodeBase64String:(NSString * )input {

          NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

          data = [GTMBase64 encodeData:data];

          NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

          return base64String;

      }

      + (NSString*)decodeBase64String:(NSString * )input {

          NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

          data = [GTMBase64 decodeData:data];

          NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

          return base64String;

      }

      + (NSString*)encodeBase64Data:(NSData *)data {

          data = [GTMBase64 encodeData:data];

          NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

          return base64String;

      }

      + (NSString*)decodeBase64Data:(NSData *)data {

          data = [GTMBase64 decodeData:data];

          NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

          return base64String;

      }

    3. 3

      BASE64加密iOS代码加密使用方法

      //    BASE64加密

          NSString *baseEncodeString = [GTMBase64 encodeBase64String:password];

          NSString *baseDecodeString = [GTMBase64 decodeBase64String:baseEncodeString];

          NSLog(@"baseEncodeString = %@",baseEncodeString);

          NSLog(@"baseDecodeString = %@",baseDecodeString);

      END

    4>iOS应用代码加密

    1. 1

      除了以上的三种算法的iOS代码加密之外,iOS应用代码加密也是非常重要的,这里就不贴代码了,主要的iOS代码加密方式如下,iOS应用代码加密是 爱 加 密 平台提供的专业的iOS加密服务。

      iOS代码加密常用加密方式
    2. 2

      1)本地数据加密

      对NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息。

      2)URL编码加密

      对程序中出现的URL进行编码加密,防止URL被静态分析

      3)网络传输数据加密

      对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取

      4)方法体,方法名高级混淆

      对应用程序的方法名和方法体进行混淆,保证源码被逆向后无法解析代码

      5)程序结构混排加密

      对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低


    展开全文
  • iOS 加密

    2017-05-11 19:12:51
    iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的...

    iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。

    上面的demo主要就是对比keychain和NSUserDefaults。

    NSUserDefaults在app卸载后,存储的数据也自动被删除了。

    keychain在app卸载后,仍然保留存储的数据。

    其用处个人认为:

    1,可以用来记录用户的操作行为,记录用户是否第一次下载该app。

    2,另外存私密信息。

    3,在我的开发经验中,userDefaults经常在app crash了以后,会丢失部分或者全部数据。所以,我认为有些重要信息可以存在keychian中。

    使用操作:

    1,导入Security.framework,GSKeychain库(pod 'GSKeychain', '~> 1.0'

    2,#import "GSKeychain.h",如下: 

    [objc]  view plain  copy
    1. [[GSKeychain systemKeychain] setSecret:@"firstInstall" forKey:@"GSKeychainDemoInstalled"];  
    2. [[GSKeychain systemKeychain] secretForKey:@"GSKeychainDemoInstalled"]  

    demo:https://github.com/MartinLi841538513/GSKeychainDemo








    展开全文
  • 这篇主要说明SHA1加密的使用方法: 1、创建HeaderFile文件My3DES.h。然后,添加以下代码,引用相关的头文件: #import <CommonCrypto/CommonCrypto.h> 2、在BuildSetting面板中设置Objective-C Bridging ...
  • 通过利用openssl的开源库,实现iOS加密和解密文件,加解密都可以相应的用命令行的openssl加解密互通 OPENSSL实现加密一个文件命令为: openssl enc -e -aes-256-cbc -p -in testfile.txt -out testfile.tt -K ae48...
  • 主要给大家介绍了关于iOS中常见的几种加密方法,其中包括 base64加密、POST加密、Token值介绍、MD5加密--(信息-摘要算法) 哈希算法之一、时间戳密码以及指纹识别等方法,文中通过示例代码介绍的非常详细,需要的朋友...
  • iOS加密解密之rsa完整代码

    热门讨论 2014-02-28 13:51:36
    内附rsa双向加密完整代码,适合iOS开发初中级开发人员。
  • 之前项目中采取的加密方式,只是对于重要的参数进行AES加密,再将各个参数拼接而成,通过MD5签名后形成最后一个参数。目前,改用了RSA签名的方式进行加密。AES加密主要针对于些重要的参数进行加密,如账号、密码等,...
  • iOS加密

    2016-02-18 11:35:24
    加密:是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已经加密的信息,但因不知道解密的方法,仍然无法了解信息的内容。1.对称加密算法 安全性从低到高 DES , 3DES, AESAES NSString *message...
  • IOS AES加密/解密

    千次阅读 2020-09-27 16:58:56
    对数据进行操作处理过程中,需要对数据进行加密/解密处理,存在各种各样的加密方式,此处介绍AES对称加密/解密。 AES加密/解密过程结合了Base64编码/解密,利用唯一秘钥key(AES具体描述此处不作详细介绍),导入...
  • 我有一个从Java服务器发送的公钥。在我解码并去除ASN.1标头...我SecKeyEncrypt在iOS端和CipherJava端使用。我正在加密的是对称AES密钥,该密钥对我的实际数据进行加密,因此密钥长度为16个字节。当简单地对密钥进行...
  • ios加密算法AES

    2022-01-18 13:22:31
    1、加密相关:加密算法概述 https://mp.weixin.qq.com/s/aorP5T5rDFiljIMeLXCBvg 2、ECB和CBC: ECB和CBC区别:https://blog.csdn.net/hqmln/article/details/84715503 ECB和CBC模式解读:...
  • AES加密 – Java与android、iOS、js的同步实现
  • iOS中常见的几种加密方式总结

    千次阅读 2020-01-09 23:19:50
    前言 随着Internet网的广泛应用,信息安全问题日益突出,当今网络应用的数据不仅仅是强调对数据本身的保护,还有是在处理大量的并发请求时对Qos和服务器...对称加密 简介: 他的加密和解密秘钥相同 特点: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,408
精华内容 20,963
关键字:

ios加密

友情链接: HASHIN.zip