标签: seckeyref

从swift中的模数和指数创建SecKey

我试着制作自己的SecKey

exponent:
let exponent = "10001"

modulus: 
let modulus = "D6250B831F82EC984513922E797283E4D3879E1F0AD52364EBDA5A5696F6E75CDCE0704A993F3F95AA557A6882A525EC4B8344DA3E7DFDECCBACCEF18131E461D3C5D3D7E1334C6AE27E5CDEF8A577857542BCBEF6CF021B0EE5604534E6C6CBAEFA6EFFC1AB93DEE7CE51A8C8F2B7345680BDF840841C3A6F654CD1F10BA2FD5CA1C6E782A8FAEC79BD22FA12116D75FFAEDB2DEC151E0B60DB91F2E74BA78EFBB45DF739AF9CDD41C482DC22FC76E03C8E2141BDAE5406C0DA230E2C7EFFC68C8811E1544496332B03BCFF0F627A8DF51D2E2B32B0771D1C6F87AD56010DCB7A3862C63B88B2CF7D7AD40CC53AF0CFEC0820777C9CCE95A58848D67779AE8D"
Run Code Online (Sandbox Code Playgroud)

as publicKey加密Swift中的文本.有人能帮我吗?

这是我的代码:

import Foundation
import Security

class Encryption {

var publicKeyPtr, privateKeyPtr: Unmanaged<SecKey>?
var publicKey, privateKey: SecKey?
let parameters: [String:String] = [kSecAttrKeyType: kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits: "2048"]

init(){

}

func genKey() {

    let status = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
    publicKey = publicKeyPtr!.takeRetainedValue()
    privateKey = privateKeyPtr!.takeRetainedValue()

}


func encrypt(plainText: String, publicKey: SecKey) -> [UInt8]{
    let blockSize = SecKeyGetBlockSize(publicKey)
    let plainTextData = [UInt8](plainText.utf8)
    let plainTextDataLength = UInt(countElements( plainText))
    var encryptedData = [UInt8](count: Int(blockSize), …
Run Code Online (Sandbox Code Playgroud)

security ios swift seckeyref

11
推荐指数
1
解决办法
2424
查看次数

来自Swift中服务器的公钥字符串的Seckey

我想使用RSA加密数据,我试图在我的代码中生成密钥并且它正在工作,但我真正需要的是从服务器获取公钥作为字符串,然后将其用作Seckey,以便我可以使用它来加密使用RSA的数据,我试过这段代码:

//KeyString is the string of the key from server
let KeyData = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!


    var cert : Unmanaged<SecCertificateRef>!;
    var  policy : Unmanaged<SecPolicy>!;
    cert = SecCertificateCreateWithData(kCFAllocatorDefault, KeyData);
    policy = SecPolicyCreateBasicX509();
    var status : OSStatus = noErr
    var trust: SecTrust?
    var certArray : [Unmanaged<SecCertificateRef>!] = [cert];
    var certArrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(certArray)
    status = SecTrustCreateWithCertificates(cert, policy, trust);
    let publicKey: SecKeyRef = SecTrustCopyPublicKey(trust!).takeUnretainedValue()
Run Code Online (Sandbox Code Playgroud)

我无法运行此代码,因为SecTrustCreateWithCertificates方法期望证书为anyObject!,我不知道如何解决这个问题,如果解决这个问题,我会得到SecKey.

在objective-c中这个答案得到了上面的代码

所以,如果任何人可以帮助我找到正确的代码来解决这个问题,我将非常感谢:)

encryption-asymmetric public-key-encryption ios swift seckeyref

5
推荐指数
1
解决办法
1万
查看次数

Swift 3将SecKey导出为String

我正在使用swift 3开发iOS应用程序.

我需要将一个SecKey(用户RSA公钥引用)导出到一个字符串(例如base64),以便通过生成的QRCode共享它.

它还必须以另一种方式工作,因为扫描的其他用户QRCode将能够SecKey从QRCode中提取的字符串重建引用.

我发现很少有教程,但我不明白我需要从SecKey引用中提取什么,我不知道如何将它转换为String.

public-key-encryption ios swift seckeyref swift3

5
推荐指数
1
解决办法
6225
查看次数

从 NSData 检索 SecKey

我在从NSData创建 SecKey 时遇到了问题。基本上,我的客户端-服务器通信基于使用私钥创建的签名,并使用公钥在服务器上进行验证。

我正在两个设备之间实现会话传输,为了继续通信,我还需要传输这些密钥。我正在将 SecKey 转换为 NSData 并通过蓝牙发送它,但在另一边我无法将 NSData 转换SecKey 回使用加密。

你能帮忙吗?

bluetooth ios swift seckeyref

4
推荐指数
1
解决办法
8081
查看次数

快速将 ECPublicKey(SecKey) 转换为 PEM 字符串

我想将 ECPublicKey 转换为 PEM 格式,如下所示

“-----开始公钥-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0WcFrFClvBE8iZ1Gdlj+mTgZoJWMNE3kDKTfRny2iaguwuSYxo+jCnXqzkR+kyFK9CR3D+pypD1sGb1BnfWAA==-----结束公钥---- ——”

  1. 生成的 ECPublicKey 密钥类型为“ECC/ECDSA/spec256r1”。下面是打印的

<SecKeyRef 曲线类型:kSecECCurveSecp256r1,算法 ID:3,密钥类型:ECPublicKey,版本:4,块大小:256 位,y:B6EEBB3791933312E10BD7C3D65C950AB7E1C325BCDB57A8663EB7B1E29BFA77,x:1D41FDAD2137 316D415B117227BCC465566E56A54E7B2B9B3A4B66C15A067611,地址:0x7f818850f6d0>

  1. 据我所知,PEM 格式只不过是带有页眉和页脚的 Base64 编码字符串。尝试了下面的代码,但没有成功
var error:Unmanaged<CFError>?

guard let cfdata = SecKeyCopyExternalRepresentation(publicKey, &error)
else { return }

let data:Data = cfdata as Data

let b64String = data.base64EncodedString()
Run Code Online (Sandbox Code Playgroud)

感谢这里的任何帮助

pem ios swift seckeyref

3
推荐指数
1
解决办法
1179
查看次数

有没有办法获取SecKey的密钥类型?

给定一个SecKey,有什么方法可以推断它的类型(例如是否是kSecAttrKeyTypeRSAkSecAttrKeyTypeEC)?

我看到SecKeyGetTypeID(),但我不清楚该函数对哪个关键对象进行操作,因为它不接受任何参数。

keychain ios swift seckeyref

2
推荐指数
1
解决办法
680
查看次数

iOS10 中的 CFRelease 崩溃

下面是我的代码,它在 iOS 9 之前一直可以正常工作。

- (NSData *)encryptWithDataPublicKey:(NSString*)data keyTag:(NSString*)tag
{  

    SecKeyRef publicKey = NULL;                                           
    NSData *publicTag = [NSData dataWithBytes:[tag UTF8String] length:[tag length]];

    NSMutableDictionary *queryPublicKey =
    [[NSMutableDictionary alloc] init];

    [queryPublicKey setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];  

    [queryPublicKey setObject:publicTag forKey:(__bridge id)kSecAttrApplicationTag];

    [queryPublicKey setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];

    [queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];

    OSStatus status = SecItemCopyMatching
    ((__bridge CFDictionaryRef)queryPublicKey, (CFTypeRef *)&publicKey);

    NSData *encodedData = nil;  

    if (status == noErr && publicKey) {  
        NSData *dataToEncrypt = [data dataUsingEncoding:NSUTF8StringEncoding];  
        encodedData = [self encryptData:dataToEncrypt withKeyRef:publicKey];  
        CFRelease(publicKey);  
    }  
    return encodedData;  
} …
Run Code Online (Sandbox Code Playgroud)

objective-c core-foundation seckeyref ios10 xcode8

0
推荐指数
1
解决办法
1861
查看次数