您现在的位置是:主页 > news > 在什么网站能找到做外贸的邮箱/有道搜索引擎入口

在什么网站能找到做外贸的邮箱/有道搜索引擎入口

admin2025/5/11 12:15:10news

简介在什么网站能找到做外贸的邮箱,有道搜索引擎入口,手机软件制作和做网站相同,烟台做公司网站在发送数据中采用二进制编码,但还是明文传输,可采用base64编码(加密)将二进制数据转成另外格式的字符串. base64的特点:编码之后,只会由64字符生成:a~z A~Z / 加上一个辅助字符(补充两个0就是一个) 方法:采用:data[string dataUsingEncoding:NSUTF8StringEncoding];字符串转成…

在什么网站能找到做外贸的邮箱,有道搜索引擎入口,手机软件制作和做网站相同,烟台做公司网站在发送数据中采用二进制编码,但还是明文传输,可采用base64编码(加密)将二进制数据转成另外格式的字符串. base64的特点:编码之后,只会由64字符生成:a~z A~Z / 加上一个辅助字符(补充两个0就是一个) 方法:采用:data[string dataUsingEncoding:NSUTF8StringEncoding];字符串转成…

在发送数据中采用二进制编码,但还是明文传输,可采用base64编码(加密)将二进制数据转成另外格式的字符串.

base64的特点:编码之后,只会由64字符生成:a~z A~Z / + 加上一个辅助字符=(补充两个0就是一个=)

方法:采用:data=[string dataUsingEncoding:NSUTF8StringEncoding];字符串转成二进制

             [data base64Encoding];二进制数据进行base64编码,得到加密后的字符串

      采用:data=[[NSData alloc]initWithBase64EncodedData:str(base64加密的字符串) options:0];将base64加密的字符串转成二进制数据

             [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];将二进制数据转成明文的字符串

 

RSA算法:找两个很大的质数:(至少100位以上)

加密用明文^P次方

解密用密文^Q次方

P可称为公钥

Q可称为私钥

DES,AES都是有RSA衍生的,比RSA更加难破解

MD5加密:用散列函数(HASH)函数(同时时间戳加盐避免被解密,)

如果这种加密方式还不行,可以使用辅助手段,记录ip,手机短信验证码,操作异常等.

对于本地不能存明文密码(采用钥匙串)

 

+ (NSString * _Nullable)MD5:(NSString * _Nonnull)string {//MD5加密

    if (string == nil || [string length] == 0) {

        return nil;

    }

    unsigned char digest[CC_MD5_DIGEST_LENGTH], i;

    CC_MD5([string UTF8String], (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding], digest);

    NSMutableString *ms = [NSMutableString string];

    for (i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {

        [ms appendFormat: @"%02x", (int)(digest[i])];

    }

    return [ms copy];

}

 

+ (NSString * _Nullable)SHA1:(NSString * _Nonnull)string {//SHA加密

    if (string == nil || [string length] == 0) {

        return nil;

    }

    unsigned char digest[CC_SHA1_DIGEST_LENGTH], i;

    CC_SHA1([string UTF8String], (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding], digest);

    NSMutableString *ms = [NSMutableString string];

    for (i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {

        [ms appendFormat: @"%02x", (int)(digest[i])];

    }

    return [ms copy];

}

 

+ (NSString * _Nullable)SHA256:(NSString * _Nonnull)string {//SHA216加密

    if (string == nil || [string length] == 0) {

        return nil;

    }

    unsigned char digest[CC_SHA256_DIGEST_LENGTH], i;

    CC_SHA256([string UTF8String], (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding], digest);

    NSMutableString *ms = [NSMutableString string];

    for (i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {

        [ms appendFormat: @"%02x", (int)(digest[i])];

    }

    return [ms copy];

}

 

+ (NSString * _Nullable)SHA512:(NSString * _Nonnull)string {//SHA512加密

    if (string == nil || [string length] == 0) {

        return nil;

    }

    unsigned char digest[CC_SHA512_DIGEST_LENGTH], i;

    CC_SHA512([string UTF8String], (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding], digest);

    NSMutableString *ms = [NSMutableString string];

    for (i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)

    {

        [ms appendFormat: @"%02x", (int)(digest[i])];

    }

    return [ms copy];

}

 

+ (NSData * _Nullable)AES128EncryptData:(NSData * _Nonnull)data withKey:(NSString * _Nonnull)key {//AES128加密

    char keyPtr[kCCKeySizeAES128+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [data length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesEncrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES128, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesEncrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

    }

    free(buffer);

    return nil;

}

 

+ (NSData *)AES128DecryptData:(NSData * _Nonnull)data withKey:(NSString * _Nonnull)key {//AES128解密

    char keyPtr[kCCKeySizeAES128+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [data length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesDecrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES128, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesDecrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];

    }

    free(buffer);

    return nil;

}

 

+ (NSData * _Nullable)AES256EncryptData:(NSData * _Nonnull)data withKey:(NSString * _Nonnull)key {//AES256加密

    char keyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [data length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesEncrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesEncrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

    }

    free(buffer);

    return nil;

}

 

+ (NSData *)AES256DecryptData:(NSData * _Nonnull)data withKey:(NSString * _Nonnull)key {//AES256解密

    char keyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [data length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesDecrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesDecrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];

    }

    free(buffer);

    return nil;

}

 

+ (NSData * _Nullable)AES128EncryptString:(NSString * _Nonnull)string withKey:(NSString * _Nonnull)key {

    return [BFCryptor AES128EncryptData:[string convertToNSData] withKey:key];

}

 

+ (NSData * _Nullable)AES128DecryptString:(NSString * _Nonnull)string withKey:(NSString * _Nonnull)key {

    return [BFCryptor AES128DecryptData:[string convertToNSData] withKey:key];

}

 

+ (NSData * _Nullable)AES256EncryptString:(NSString * _Nonnull)string withKey:(NSString * _Nonnull)key {

    return [BFCryptor AES256EncryptData:[string convertToNSData] withKey:key];

}

 

+ (NSData * _Nullable)AES256DecryptString:(NSString * _Nonnull)string withKey:(NSString * _Nonnull)key {

    return [BFCryptor AES256DecryptData:[string convertToNSData] withKey:key];

}

 

 

转载于:https://www.cnblogs.com/diyigechengxu/p/5574700.html