美文网首页
iOS DES 加密,ECB模式,对称加密

iOS DES 加密,ECB模式,对称加密

作者: 移动的键盘 | 来源:发表于2020-11-24 13:26 被阅读0次
import UIKit
import CommonCrypto

class MBADESSwift: NSObject {

/// DES 加密
/// - Parameters:
///   - data: 需要加密的数据
///   - key: 加密 密钥 8 位长度
/// - Returns: 加密后的数据
@objc class func encrypt(data:Data,key:String) -> Data? {
    
    let keyLength = kCCKeySizeDES + 1
    
    var keyPtr:Array<CChar> = []

    for _:Int in 0 ..< keyLength {
        keyPtr.append(CChar(0))
    }
    
    if key.getCString(&keyPtr, maxLength: keyLength, encoding: .utf8) {
        
        let dataLength:Int = data.count
        
        let bufferSize:Int = dataLength + kCCBlockSizeDES
        
        let buffer = malloc(bufferSize)
        
        var numBytesEncrypted:Int = 0
        
        let bytes = [UInt8](data)
        
        let cryptStatus:CCCryptorStatus = CCCrypt(CCOperation(kCCEncrypt), CCAlgorithm(kCCAlgorithmDES), CCOptions(ccPKCS7Padding | kCCModeECB) , keyPtr, kCCKeySizeDES, nil, bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
        
        var outData:Data?
        
        if cryptStatus == kCCSuccess {
            
            outData = Data.init(bytes: buffer!, count: numBytesEncrypted)
        }
        
        free(buffer)
        
        return outData
    }
    
    return nil;
}

/// DES 解密
/// - Parameters:
///   - data: 需要解密的数据
///   - key: 解密的密钥 8位
/// - Returns: 解密后的数据
@objc class func decrypt(data:Data,key:String) -> Data? {

    let keyLength = kCCKeySizeDES + 1
    
    var keyPtr:Array<CChar> = []
    
    for _:Int in 0 ..< keyLength {
        keyPtr.append(CChar(0))
    }

    if key.getCString(&keyPtr, maxLength: keyLength, encoding: .utf8) {
        
        let dataLength:Int = data.count
        
        let bufferSize:Int = dataLength + kCCBlockSizeDES
        
        let buffer = malloc(bufferSize)
        
        var numBytesDecrypted:Int = 0
        
        let bytes = [UInt8](data)
        
        let cryptStatus:CCCryptorStatus = CCCrypt(CCOperation(kCCDecrypt), CCAlgorithm(kCCAlgorithmDES), CCOptions(ccPKCS7Padding | kCCModeECB) , keyPtr, kCCKeySizeDES, nil, bytes, dataLength, buffer, bufferSize, &numBytesDecrypted)
        
        var outData:Data?
        
        if cryptStatus == kCCSuccess {
            
            outData = Data.init(bytes: buffer!, count: numBytesDecrypted)
        }
        
        free(buffer)

        return outData
    }
    
    return nil
}
}

加解密 key ,iv 参数,加解密对齐模式ECB/CBC 和服务端协商

相关文章

  • 对称加密与非对称加密

    一.对称加密 常用的对称加密DES、AES,DES也有衍生的3DES等加密方式 对称加密用到的加密模式有ECB、C...

  • 加密方式

    加密方式 1.可加密,可解密 Base64编码 对称加密AES加密DES加密有两种模式,ECB和CBC 非对称加密...

  • iOS DES 加密,ECB模式,对称加密

    加解密 key ,iv 参数,加解密对齐模式ECB/CBC 和服务端协商

  • 交易密码加密

    //DES ECB模式加密 function encryptByDESModeEBC(message,key){ ...

  • ios des加密

    前言 des加密做的时候后端前端ios和安卓三端需统一 1、DES加密有两种模式,ECB和CBC。还有就是填充模式...

  • iOS 3DES 加密,ECB模式,对称加密

    加解密 key ,iv 参数,加解密对齐模式ECB/CBC 和服务端协商

  • 面试题总结

    1. iOS开发中的加密方式 iOS加密相关算法框架:CommonCrypto。 对称加密: DES、3DES、A...

  • 密码学及iOS签名(一) —— 加密解密

    加密解密类型 对称加密 公钥密码(非对称加密) 对称加密(常见的DES、 3DES、AES) 在对称密码中,加密、...

  • iOS逆向基础04-密码学

    一. 加密常识 1.1 对称加密和非对称加密 对称加密DES:加密标准3DES:加强版DESAES:现在的加密标准...

  • IOS的签名机制

    前言 了解IOS的数字签名机制之前我们需要掌握以下几个知识:加密解密(对称加密(DES 3DES AES),非对称...

网友评论

      本文标题:iOS DES 加密,ECB模式,对称加密

      本文链接:https://www.haomeiwen.com/subject/rzyiiktx.html