# XLCryptoTool **Repository Path**: ilongge/xlcryptotool ## Basic Information - **Project Name**: XLCryptoTool - **Description**: AES加密支持CBC,ECB。 SHA加密支持SHA1,SHA224,SHA256,SHA384,SHA512。 - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-16 - **Last Updated**: 2023-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XLCryptoTool ## 简介 AES加密支持CBC,ECB。 SHA加密支持SHA1,SHA224,SHA256,SHA384,SHA512,HMAC。 ### 使用Cocoapods导入 ```ruby pod 'XLCryptoTool' ``` ### AES加密,解密 #### AES加密模式,CBC,ECB ``` typedef NS_ENUM(NSInteger, XL_AES_Crypto_Mode){ XL_AES_Crypto_Mode_CBC, XL_AES_Crypto_Mode_ECB }; ``` #### 以AES方式对二进制data加密 ``` /** * AES加密 * @param encryptKey 加密秘钥 * @param ivKey 偏移秘钥 * @param mode 加密模式 * @param encryptData 需要加密的二进制数据 */ + (NSData *)aesEncryptWithKey:(NSString *)encryptKey andIvKey:(NSString *)ivKey andMode:(XL_AES_Crypto_Mode)mode andData:(NSData *)encryptData; ``` #### 以AES方式对文本加密 ``` /** * AES加密 * @param encryptKey 加密秘钥 * @param ivKey 偏移秘钥 * @param mode 加密模式 * @param encryptText 需要加密的字符串 */ + (NSString *)aesEncryptWithKey:(NSString *)encryptKey andIvKey:(NSString *)ivKey andMode:(XL_AES_Crypto_Mode)mode andText:(NSString *)encryptText; ``` #### 以AES方式对二进制数据解密 ``` /** * AES解密 * @param decryptKey 解密秘钥 * @param ivKey 偏移秘钥 * @param mode 加密模式 * @param decryptData 需要解密的二进制数据 */ + (NSData *)aesDecryptWithKey:(NSString *)decryptKey andIvKey:(NSString *)ivKey andMode:(XL_AES_Crypto_Mode)mode andData:(NSData *)decryptData; ``` #### 以AES方式对文本解密 ``` /** * AES解密 * @param decryptKey 解密秘钥 * @param ivKey 偏移秘钥 * @param mode 加密模式 * @param decryptText 需要解密的字符串 */ + (NSString *)aesDecryptWithKey:(NSString *)decryptKey andIvKey:(NSString *)ivKey andMode:(XL_AES_Crypto_Mode)mode andText:(NSString *)decryptText; ``` ### SHA散列加密 #### SHA加盐或者加密秘钥类型 ``` typedef NS_ENUM(NSInteger, XL_SHA_Key_Mode) { /// 在需要加密的字符串前后拼接key XL_SHA_Key_Mode_Salt_Front, /// 在需要加密的字符串前后拼接key XL_SHA_Key_Mode_Salt_Behind, /// key单独作为参数进行加密 XL_SHA_Key_Mode_HMAC }; ``` #### SHA加密模式 ``` typedef NS_ENUM(NSInteger, XL_SHA_Crypto_Mode) { XL_SHA_Crypto_1 = CC_SHA1_DIGEST_LENGTH, XL_SHA_Crypto_224 = CC_SHA224_DIGEST_LENGTH, XL_SHA_Crypto_256 = CC_SHA256_DIGEST_LENGTH, XL_SHA_Crypto_384 = CC_SHA384_DIGEST_LENGTH, XL_SHA_Crypto_512 = CC_SHA512_DIGEST_LENGTH }; ``` #### SHA加密 ``` #pragma mark SHA /** * SHA加密 sha * @param cryptoMode 加密模式 * @param keyMode 秘钥模式 * @param encryptKey 加密秘钥 * @param text 需要加密的字符串 */ + (NSString *)shaCryptoWithMode:(XL_SHA_Crypto_Mode)cryptoMode andKeyMode:(XL_SHA_Key_Mode)keyMode andKey:(NSString *)encryptKey andText:(NSString *)text; ``` #### 例子 ```Objactve-C NSString *text = @"1234567890qwertyuiopasdfghjklzxcvbnm"; NSString *key = @"XLCryptoTool"; NSString *cryptoString = [XLCryptoTool shaCryptoWithMode:XL_SHA_Crypto_256 andKeyMode:XL_SHA_Key_Mode_Salt_Behind andKey:key andText:text]; NSLog(@"%@", cryptoString); cryptoString = [XLCryptoTool aesEncryptWithKey:key andIvKey:key andMode:XL_AES_Crypto_Mode_ECB andText:text]; NSLog(@"%@", cryptoString); cryptoString = [XLCryptoTool aesDecryptWithKey:key andIvKey:key andMode:XL_AES_Crypto_Mode_ECB andText:cryptoString]; NSLog(@"%@", cryptoString); ``` ```Objective-C XLCryptoTool_Example[37011:855270] 9810b513df932cf7a0392f75de8c015da466663ffa3681a02f0fd6240fe67e0b XLCryptoTool_Example[37011:855270] f96e2c1266f749262f2847179a2dbdde09becbf8dcec855ac996effea64073787e4cb5353371a031f56db29a257550dd XLCryptoTool_Example[37011:855270] 1234567890qwertyuiopasdfghjklzxcvbnm ```