forkey- IOS RSA 加密 不用openssl可以么 这个案例可靠么 这个案例可靠么

问题描述

IOS RSA 加密 不用openssl可以么 这个案例可靠么 这个案例可靠么
这个案例我是从code4app下载的。大家请看

// RSA.h
//
// Copyright (c) 2012 scott ban
//
// Permission is hereby granted free of charge to any person obtaining a copy
// of this software and associated documentation files (the ""Software"") to deal
// in the Software without restriction including without limitation the rights
// to use copy modify merge publish distribute sublicense and/or sell
// copies of the Software and to permit persons to whom the Software is
// furnished to do so subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED ""AS IS"" WITHOUT WARRANTY OF ANY KIND EXPRESS OR
// IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM DAMAGES OR OTHER
// LIABILITY WHETHER IN AN ACTION OF CONTRACT TORT OR OTHERWISE ARISING FROM
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import

typedef void (^GenerateSuccessBlock)(void);

@interface RSA : NSObject{
@private
NSData * publicTag;
NSData * privateTag;
NSOperationQueue * cryptoQueue;
GenerateSuccessBlock success;
}

@property (nonatomicreadonly) SecKeyRef publicKeyRef;
@property (nonatomicreadonly) SecKeyRef privateKeyRef;
@property (nonatomicreadonly) NSData *publicKeyBits;
@property (nonatomicreadonly) NSData *privateKeyBits;

  • (id)shareInstance;
  • (void)generateKeyPairRSACompleteBlock:(GenerateSuccessBlock)_success;
  • (NSData *)RSA_EncryptUsingPublicKeyWithData:(NSData *)data;
  • (NSData )RSA_EncryptUsingPrivateKeyWithData:(NSData)data;
  • (NSData *)RSA_DecryptUsingPublicKeyWithData:(NSData *)data;
  • (NSData )RSA_DecryptUsingPrivateKeyWithData:(NSData)data;

@end
// RSA.m
//
// Copyright (c) 2012 scott ban
//
// Permission is hereby granted free of charge to any person obtaining a copy
// of this software and associated documentation files (the ""Software"") to deal
// in the Software without restriction including without limitation the rights
// to use copy modify merge publish distribute sublicense and/or sell
// copies of the Software and to permit persons to whom the Software is
// furnished to do so subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED ""AS IS"" WITHOUT WARRANTY OF ANY KIND EXPRESS OR
// IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM DAMAGES OR OTHER
// LIABILITY WHETHER IN AN ACTION OF CONTRACT TORT OR OTHERWISE ARISING FROM
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import ""RSA.h""

uint8_t *plainBuffer;
uint8_t *cipherBuffer;
uint8_t *decryptedBuffer;

const size_t BUFFER_SIZE = 32;
const size_t CIPHER_BUFFER_SIZE = 1024;
const uint32_t PADDING = kSecPaddingPKCS1;
const size_t kSecAttrKeySizeInBitsLength = 2024;

//static const UInt8 publicKeyIdentifier[] = ""com.apple.sample.publickey222"";
//static const UInt8 privateKeyIdentifier[] = ""com.apple.sample.privatekey111"";
/**

  • 公钥*/static const UInt8 publicKeyIdentifier[] = ""ba3a3302ed9e00d47775582ced852ac325dd8e79702baf754bd1b0a9e14857f0dee560f8f951b118f3331c661e6fd5ce7c9060a0e3bc2afefacf14dd81797610a074f86a5b725cba12daa8ada22d944d5a30b993a6145b4672f37e5c58e4ce563e79ed7bb485abb129df969ced30051537d5bd6ac70d1be3ddfa834100efc055"";static const UInt8 privateKeyIdentifier[] = ""com.apple.sample.privatekey111"";

#
[privateKeyAttr setObject:privateTag forKey:(__bridge id)kSecAttrApplicationTag];
// See SecKey.h to set other flag values.
cKey length];

NSMutableData *bits = [NSMutableData dataWithLength:keyBufferSize];OSStatus sanityCheck = SecKeyDecrypt(key                                     kSecPaddingPKCS1                                     (const uint8_t *) [wrappedSymmetricKey bytes]                                     cipherBufferSize                                     [bits mutableBytes]                                     &keyBufferSize);NSAssert(sanityCheck == noErr @""Error decrypting OSStatus == %ld."" sanityCheck);[bits setLength:keyBufferSize];return bits;

}

  • (NSData *) RSA_EncryptUsingPublicKeyWithData:(NSData *)data{
    return [self rsaEncryptWithData:data usingPublicKey:YES];
    }
  • (NSData ) RSA_EncryptUsingPrivateKeyWithData:(NSData)data{
    return [self rsaEncryptWithData:data usingPublicKey:NO];
    }
  • (NSData *) RSA_DecryptUsingPublicKeyWithData:(NSData *)data{
    return [self rsaDecryptWithData:data usingPublicKey:YES];
    }
  • (NSData ) RSA_DecryptUsingPrivateKeyWithData:(NSData)data{
    return [self rsaDecryptWithData:data usingPublicKey:NO];
    }

@end

IOS RSA 加密 这个案例我是从code4app下载的,但是里面不用openssl生成的.pem文件作为公钥,
而是直接用/** * 公钥 */ static const UInt8 publicKeyIdentifier[] = ""ba3a3302ed9e00d47775582ced852ac325dd8e79702baf754bd1b0a9e14857f0dee560f8f951b118f3331c661e6fd5ce7c9060a0e3bc2afefacf14dd81797610a074f86a5b725cba12daa8ada22d944d5a30b993a6145b4672f37e5c58e4ce563e79ed7bb485abb129df969ced30051537d5bd6ac70d1be3ddfa834100efc055""; static const UInt8 privateKeyIdentifier[] = ""com.apple.sample.privatekey111"";为什么
这个用公钥么,我表示疑惑。。。这个案例可行么,,。。

时间: 2024-11-08 23:14:15

forkey- IOS RSA 加密 不用openssl可以么 这个案例可靠么 这个案例可靠么的相关文章

rsa-ios RSA加密解密,后台只传一个公钥

问题描述 ios RSA加密解密,后台只传一个公钥 如题,后台用java写的,写的时候没考虑iOS,现在后台不想改,就想这样,各位大神怎么实现这个? 解决方案 关于RSA加密 后台就给一个公钥 解决方案二: ios端接收一个公钥不就行么,用的都是socket发送数据 解决方案三: 公钥可以通过各种方式,比如网络HTTP请求,或者文件跟App更新一起下去等.都可以

漫谈iOS RSA非对称加密与解密

前言 最近公司的客户端安全性出现了严重的问题,如今这个出解决方案并自我测试验证可行性的重任落在了我的身上,学习了很多他人的文章,再经过多次讨论,最后才确定最终解决方案.笔者在这里讲讲这一经历中所需要了解的知识. iOS客户端想要加密传输数据以防被窃取,最可靠的方式莫过于使用公钥加密算法加密,使用HTTPS协议在整个传输过程中都使用了这个技术,对于未能使用HTTPS的HTTP接口,我们能否实现RSA加密呢? PHP端实现解密可参考:iOS与PHP端实现RSA非对称加密解密 提示:本篇文章只讲RSA

ios-关于IOS的RSA加密问题

问题描述 关于IOS的RSA加密问题 由于公钥是服务器传下来的NSString类型,由于一些原因,不能使用证书加密,不能使用openssl库进行加密,要怎么加密好???急求,找了好久了,也看到有一些提问的,解决方法都不行... 最好有代码可以看... 解决方案 你要看RSA加密的话可以看看支付宝的SDK. 那里面有详细的例子.

PHP OpenSSL实现RSA加密解密(通java)

openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. 加密使用 公钥, 解密使用 私钥 签名使用 私钥, 验证使用 公钥 rsa加密的明文最大长度117字节,解密要求密文最大长度为128字节.待加密的字节数不能超过密钥的长度值除以8再减去11,而加密后得到密文的字节数,正好是密钥的长度值除以8.这个规定很狗血,所以就出现了分片加密,网上很流行这个版本.很简单,

求帮助!ios用RSA加密和解密!在线等

问题描述 求帮助!ios用RSA加密和解密!在线等 用 oc 实现RSA 加密和解密 在线等 谢谢 解决方案 参考:http://blog.163.com/l1_jun/blog/static/1438638820127292147316/ 解决方案二: 公钥和私钥都是服务端生成好的.直接复制过来的 求个大神啊 解决方案三: 理论上服务端只会给你公钥,私钥,服务端要自己保留. 你只能用公钥加密,或者解密. 如果oc支持不够好,那么就可能要利用c来做.rsa 解决方案四: 现在公司的意思 是 我发

iOS在RSA加密解密和签名的时候已经生成密钥、摘要和密文。向服务器请求为何后台没有反应

问题描述 iOS在RSA加密解密和签名的时候已经生成密钥.摘要和密文.向服务器请求为何后台没有反应 是RSA加密签名这里的问题吗 解决方案 先要看后台有没有收到数据,然后就是后台是否正确处理

rsa-如何实现C++版的RSA加密,在不使用Openssl的情况下

问题描述 如何实现C++版的RSA加密,在不使用Openssl的情况下 已知公钥和私钥都是字符串.不使用Openssl等库的情况下实现C++版的RSA加密 解决方案 百度上好像有ssa加密的源码,当时毕业设计时写过,记得是从百度上找到资料.但是后来就找不到了 解决方案二: 上面是RSA,不是ssa,不小心打错了 解决方案三: 你这个需要自己实现rsa算法,然后来加解密 http://blog.csdn.net/ghevinn/article/details/12561987 解决方案四: RSA

刚开始学OPENSSL , 请问rsa加密解密和验证签名有关系吗? 为什么需要验证签名。

问题描述 刚开始学OPENSSL , 请问rsa加密解密和验证签名有关系吗? 为什么需要验证签名. 我只想知道具体的工作过程,不必知道里面的算法是怎么实现的. 知道怎么去用就可以了,感觉自己越看与糊涂了. 求助 谢谢 解决方案 因为RSA算法是用的公钥,私钥机制来进行加解密,而私钥另一个用途就是验证身份,所以RSA加密本身也能用在身份验证,数字签名等场合. 这相当于RSA的多个用途 解决方案二: 公钥和私钥是一对的,这对密钥由个人向认证机构申请,最后由认证机构颁发私钥给你并在其网站上公布你的公钥

格式-利用openssl进行RSA加密解密问题

问题描述 利用openssl进行RSA加密解密问题 利用openssl进行RSA加密解密 pem 文件是pkcs12格式 请问怎么获取公钥私钥 解决方案 首先你的pem文件是什么,公钥私钥一般在两个不同的文件 解决方案二: 用记事本打开这个文件看看里面的格式,一般是带"-----------------------------"分隔符之间的部分.其余的都是产生密钥对用的中间数据.