有AES加密解密的cocoa源代码吗?

2024-01-09

我正在寻找一些关于 AES 加密的可可代码,并且我做了一些谷歌搜索。我发现这个非常有用的链接 -http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html。所以我尝试了一下,但它对我不起作用。

任何人都可以建议我一些有用的链接或源代码,可以帮助我在示例应用程序中实现它。


我使用一个简单的类别NSData使用内置的CommonCrypto进行 AES 256 位加密的框架。我在 Mac 上使用它,但它在 iPhone 上也应该可以正常工作:

#import <CommonCrypto/CommonCryptor.h>
@implementation NSData (AESAdditions)
- (NSData*)AES256EncryptWithKey:(NSString*)key {
    // 'key' should be 32 bytes for AES256, will be null-padded otherwise
    char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
    bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)

    // fetch key data
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [self length];

    //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.
    //That's why we need to add the size of one block here
    size_t bufferSize           = dataLength + kCCBlockSizeAES128;
    void* buffer                = malloc(bufferSize);

    size_t numBytesEncrypted    = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                          keyPtr, kCCKeySizeAES256,
                                          NULL /* initialization vector (optional) */,
                                          [self bytes], dataLength, /* input */
                                          buffer, bufferSize, /* output */
                                          &numBytesEncrypted);

    if (cryptStatus == kCCSuccess)
    {
        //the returned NSData takes ownership of the buffer and will free it on deallocation
        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
    }

    free(buffer); //free the buffer;
    return nil;
}

- (NSData*)AES256DecryptWithKey:(NSString*)key {
    // 'key' should be 32 bytes for AES256, will be null-padded otherwise
    char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
    bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)

    // fetch key data
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [self length];

    //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.
    //That's why we need to add the size of one block here
    size_t bufferSize           = dataLength + kCCBlockSizeAES128;
    void* buffer                = malloc(bufferSize);

    size_t numBytesDecrypted    = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                          keyPtr, kCCKeySizeAES256,
                                          NULL /* initialization vector (optional) */,
                                          [self bytes], dataLength, /* input */
                                          buffer, bufferSize, /* output */
                                          &numBytesDecrypted);

    if (cryptStatus == kCCSuccess)
    {
        //the returned NSData takes ownership of the buffer and will free it on deallocation
        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    }

    free(buffer); //free the buffer;
    return nil;
}
@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有AES加密解密的cocoa源代码吗? 的相关文章

  • 是否有一种加密技术可以将 8 位数字变成 10 或 11 位或更少的数字?

    我见过的许多加密技术都可以轻松加密一个简单的 8 位数字 如 12345678 但结果通常是 8745b34097af8bc9de087e98deb8707aac8797d097f 编造的 但你明白了 有没有办法加密这个 8 位数字 但生成
  • 如何用Block简化回调逻辑?

    假设我需要与一个提供协议的类进行通信 并在操作完成时调用委托方法 如下所示 protocol SomeObjectDelegate required void stuffDone id anObject void stuffFailed e
  • 无论如何要解密加密的sql server存储过程吗?

    我有几个 ms sql server 2000 存储过程 很久以前就被前雇员加密了 一切都很好 直到我们需要稍微改变一下 有什么方法可以检索源代码吗 或者重写是唯一的选择 多谢 或者免费 谷歌是你的朋友 http searchsqlserv
  • 无法按住 CTRL+拖动 NSButton 到自定义 NSView 标题

    我想创建一个自定义的NSTableCellView由 Interface Builder 实例化 我已将 Table Cell View 类设置为MyTableCellView 并正确创建MyTableCellView NSTableCel
  • asp.net 视图状态加密

    我有几个关于何时以及如何在 ASP NET 3 5 中加密视图状态的问题 例如 如果我的 web config 中有一个机器密钥条目 例如 解密Key 自动生成 IsolateApps 验证 AES 解密 自动 gt 此时视图状态是否已加密
  • 对于使用 CCCrypt() 的 AES128,密钥可以长于 128 位吗?

    我正在使用CCCrypt https developer apple com library archive documentation System Conceptual ManPages iPhoneOS man3 CCCrypt 3c
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 为沙盒 Cocoa 应用程序创建临时文件

    我的应用程序是沙箱化的 根据最新的应用程序商店指南 我想创建一些临时文件 我可以这样做吗 如果 是 我可以在哪里这样做 有没有预先指定的路径 还有访问该路径的命令 您应该使用NSTemporaryDirectory 函数 它将查找并返回适合
  • Codesign:什么是未密封内容?

    我刚刚升级到 XCode 6 并尝试构建我的开发者 ID 签名的 Mac 应用程序 但是 我现在收到以下协同设计错误 unsealed contents present in the root directory of an embedde
  • 在 JavaScript 中混淆和反混淆字符串的最简单方法

    我正在寻找一种在 JavaScript 中混淆和反混淆字符串的方法 我的意思是当安全性不是问题时的加密和解密 理想情况下是 JS 原生的东西 比如base64 encode and base64 decode 在 PHP 中 可以 将字符串
  • 使用 Cocoa 获取无法安装的驱动器列表

    我想获取在 OS X 下使用 Cocoa Objective C 无法安装 弹出的驱动器列表 我希望 NSWorkspace getFileSystemInfoForPath 能帮助我 NSArray listOfMedia NSWorks
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • NSTextField 弹跳截断的文本而不是换行

    我想知道是否有一种简单的方法来 弹跳 或滚动NSTextField文本太长而无法显示 例如 lt scroll This is a rather large pi ece of text 因此 在此示例中 文本将滚动到末尾 显示消息的其余部
  • 数据加密

    存储大量信用卡信息的数据库是我们刚刚完成的系统中不可避免的一部分 不过 我想要的是卡号的最终安全性 我们可以设置一种加密和解密机制 但我们自己无法解密任何给定的号码 我所追求的是一种即使在数据库级别也能保护这些信息的方法 这样任何人都无法进
  • NSView 中 CALayers 的简单示例

    我正在尝试将多个 CALayer 添加到 NSView 但显示时我的视图仍然为空 这是我的代码 id initWithFrame NSRect frame self super initWithFrame frame if self sel
  • Golang 中的确定性 RSA 加密 - 如何在多次加密下为给定消息获得相同的结果

    对于下面的RSA加密代码 每次对同一条消息进行加密时 结果都会不同 我发现这是由于rand Reader in the rsa EncryptOAEP功能使其更加安全doc https pkg go dev crypto rsa Encry
  • 如何为整个 iOS 应用程序设置自定义字体而不指定大小

    我正在尝试在整个我的应用程序中应用自定义字体iOS app 我发现我可以使用 UILabel appearance setFont UIFont fontWithName Proxima Nova size 17 0 设置所有的默认字体和大
  • 如何知道两个 NSDate 是否在同一天

    你知道如何知道两个NSDate是同一天 我想考虑到区域设置 使用a可能很容易timeIntervalSinceDate 但星期一 23H58 和星期二 00H01 不在同一天 处理NSDate和计算区域设置不是很容易 NSCalendar

随机推荐

  • Redis同步复制失败场景

    在redis集群规范这里https redis io topics cluster tutorial https redis io topics cluster tutorial它提到 however note that Redis Clu
  • 如何删除消费者已经消费过的数据?卡夫卡

    我正在kafka中进行数据复制 但是 kafka 日志文件的大小增长得非常快 一天的大小达到 5 GB 作为这个问题的解决方案 我想立即删除已处理的数据 我正在 AdminClient 中使用删除记录方法来删除偏移量 但是当我查看日志文件时
  • Rails 设计禁用某些用户类型的密码恢复

    在我的 Rails 项目中 我有不同类型的用户 其中之一具有user status admin 与其他用户不同 它拥有编辑内容的完全权限 出于显而易见的原因 我想为这些类型的用户添加额外的安全性 特别是完全禁用密码恢复 覆盖标准设计密码恢复
  • 检查Python中字符串以什么数字结尾

    例如 example123 将是123 ex123ample 将是None 123example 将是None 您可以使用正则表达式re http docs python org library re html module import
  • 从 C# 中的正则表达式模式生成文本的所有排列

    所以我有一个正则表达式模式 我想生成该模式允许的所有文本排列 Example var pattern My biological real Name is Steve var permutations getStringPermutatio
  • Facebook 为 Android 安装追踪功能

    我们仍在调查为什么我们的安装没有被跟踪 我已经向 Facebook 开了另一张支持票 以澄清安装和登录是相同还是不同的事件 但我也想深入了解 Ti Facebook 模块 由于更新方便 我们一直在 Android 上进行测试 这是 Face
  • java中的try/catch块返回与finally子句[重复]

    这个问题在这里已经有答案了 给定 java 中的以下 try catch 块 try return catch SomeException e System out println e finally System out println
  • Django 或 mod_wsgi 在运行时会修改 sys.path 吗?

    我设置了 mod wsgi 并检查它工作正常 我还想出了一个简单的 django 项目 并使用以下命令检查了它是否正常工作 django admin py runserver settings mysite settings 但是 当我运行
  • jQuery() 在 jQuery.parseHTML() 结果中找不到元素

    我正在使用 QUnit 编写测试并使用 ajax 从本地运行的开发站点中提取 HTML 进行一些测试 add elements function location selector ajax location async false don
  • 在单页应用程序中创建临时 URL

    在我的基于反应的单页面应用程序中 我的页面分为两个窗格 左窗格 过滤器面板 右窗格 网格 包含通过应用过滤器的数据的表 总之 我有一个看起来与 amazon com 非常相似的应用程序 默认情况下 当用户在浏览器中点击应用程序的根端点 时
  • 删除断开连接 socket.io 上的对象

    我正在使用 Nodejs 和 Socket io 当客户端连接时 会创建新的 JavaScript 对象 这些物体会永远存在吗 当客户端断开连接时是否应该删除或删除它们 甚至可以移除一个物体吗 我知道删除是行不通的 谢谢 我想这更像是一个一
  • Django url templatetag (但不是 reverse() )错误:渲染时捕获 NoReverseMatch

    我正在尝试使用 url 模板标签 url all labs map 但是当我查看该页面时 我收到此错误 Caught NoReverseMatch while rendering Reverse for all labs map with
  • SQL Server 2016 时间戳数据类型

    我有以下问题 我正在使用一种归档软件 将其数据导出到 MS SQL 数据库 其中一列被指定为 Timestamp S 代表 unix 时间 它是一个 32 位整数 该数据库需要通过不同的报告软件进行查询 问题是报告软件要求其条目有一个名为
  • 如何通过代码获取android中的默认设备辅助应用程序?

    我的手机安装了两个语音搜索 Google 应用程序和 S voice 应用程序 默认应用程序是 S voice 应用程序 如下图所示 我的问题是 我们如何在Android 6 0中使用编程方式获得默认的语音应用程序 先感谢您 这就是我所做的
  • 中等信任文件 I/O 权限

    根据这个关于中等信任度的 MSDN 文章 http msdn microsoft com en us library ff648344 aspx paght000020 mediumtrustsummary 在中等信任度下 文件IO权限受到
  • 在 C++ 中,编写在 main() 之前执行的代码是否是一种好的形式?

    全局声明的类的构造函数在进入 main 之前被调用 虽然这可能会让代码的新读者感到困惑 因为这种情况很少发生 但这一定是一个坏主意吗 它不是一定这是一个坏主意 但通常是的 首先 它是全局数据 而全局数据通常是一件坏事 你拥有的全局状态越多
  • PDE Headless 构建的目标平台不起作用

    我目前正在尝试让我的无头 pde 构建工作 但我陷入了一个我不知道如何继续的点 问题是如何定义相关的目标平台来编译插件 我有一个包含以下调用的 build bat 全部在一行中 java jar D target eclipse plugi
  • asp.net mvc 2 向导

    有人有 ASP NET MVC 2 中向导控件的一些代码的链接吗 最好不使用会话 我想保留步骤之间的所有值
  • 将 Javascript 添加到自定义语言 - ACE 编辑器

    我正在使用 ACE 编辑器来使用 JSON 作为基础的自定义元语言 但我想在用户输入类似内容时添加Javascript 自定义 函数 参数 javascript 代码 这个想法是使用 JS 已经使用的样式来突出显示 javascript 代
  • 有AES加密解密的cocoa源代码吗?

    我正在寻找一些关于 AES 加密的可可代码 并且我做了一些谷歌搜索 我发现这个非常有用的链接 http iphonedevelopment blogspot com 2009 02 strong encryption for cocoa c