class func aes_decrypt(_ str:String , aes_key:String) -> String{
let data = Data(base64Encoded: str, options: .ignoreUnknownCharacters)!
var decrypted: [UInt8] = []
do {
decrypted = try AES(key: Array(aes_key.utf8), blockMode: ECB(), padding: .pkcs7).decrypt(data.bytes);
} catch {
print(error.localizedDescription)
return String(bytes: Data(decrypted).bytes, encoding: .utf8) ?? ""
SwiftyRSA看看github文档就可以了,CryptoSwift文档中没有对字符串加解密的示例,所以需要自己从Array<Uint8> 转 String ,这里可能就有点懵逼。AES其中加密参数需要你和后台确定好比如说:模式( ECB ) 、填充方式(.pkcs7)。如果你用到了偏移量 iv ,那你可能需要使用AES的其他构造方法。
文章目录前言一、SwiftyRSA介绍二、CryptoSwift介绍三、使用方法1.引入库2.SwiftyRSA插件RSA加密2.SwiftyRSA插件RSA解密3.CryptoSwift插件AES加密4.CryptoSwift插件AES解密总结前言一般APP通讯都要进行加密来保护数据 本文介绍了 swift 5.0 CryptoSwift 以及 SwiftyRSA 的使用。举个栗子:{“requestData”:“WsKJFYXD/678VaunPL6lJ41vmCqoQQk8mM6khE
https://github.com/TakeScoop/SwiftyRSA
Swift3之前:
copy 下面三个文件代码到项目中,然后在桥文件 ...-Bridging-Header.h 中加上
#import
"NSData+SHA.h" 最后在需要的地方用就好了。
如publickey加密:
try Swift
以DER格式创建公共和私有RSA密钥
let (privateKey, publicKey) = try! CC.RSA.generateKeyPair(2048)
将它们转换为PEM格式
let privateKeyPEM = try SwKeyConvert.PrivateKey.derToPKCS1PEM(privateKey)
let publicKeyPEM = SwKeyConvert.PublicKey.derToPKCS8PEM(publicKey)
或从带有PEM数据的字符串中读取它们
let privateKeyDER = SwKeyConvert.PrivateKey.pemToPKCS1DER(privateKeyPEM)
let publicKeyDER = SwKeyConvert.PublicKey.pemToPKCS1DER(publicKeyPEM)
或加密,解密私钥(与OpenSSL兼容)
try SwKeyConvert.PrivateKey.encryptPEM(privateKeyPEM, passphrase: "longpasswo
在加密和解密中,我们需要了解的知识有什么事openssl;RSA加密算法的基本原理;如何通过openssl生成最后我们需要的der和p12文件。
废话不多说,直接写步骤:
第一步:openssl来生成公钥和私钥证书,最后需要得到公钥证书和私钥证书。这是在mac
OX系统下显示的证书,如果我们用文本编辑器打开它,会发现里面是----BEGIN RSA 开头 并且----END RSA 结尾
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
生成的private.pem是私钥,public.pem是公钥。
2. 把公钥传给服务器
把生成的public.pem文件传给服务器,服务器保存公钥。
3. 客户端发送加密后的登录信息
客户端把用户名和密码使用RSA算法进行加密,然后将加密后的信息发送给服务器。
4. 服务器使用私钥解密信息
服务器使用保存的私钥对加密后的信息进行解密,解密后得到用户名和密码的明文。
5. 在服务器上验证用户身份
服务器使用明文信息验证用户身份,如果验证通过则允许用户登录。