一、簡單說明

成都創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!成都創(chuàng)新互聯(lián)具備承接各種類型的成都網(wǎng)站建設(shè)、網(wǎng)站制作項(xiàng)目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。
1.說明
在開發(fā)應(yīng)用的時(shí)候,數(shù)據(jù)的安全性至關(guān)重要,而僅僅用POST請(qǐng)求提交用戶的隱私數(shù)據(jù),還是不能完全解決安全問題。
如:可以利用軟件(比如Charles)設(shè)置代理服務(wù)器,攔截查看手機(jī)的請(qǐng)求數(shù)據(jù)
“青花瓷”軟件
因此:提交用戶的隱私數(shù)據(jù)時(shí),一定不要明文提交,要加密處理后再提交
2.常見的加密算法
MD5 SHA DES 3DES RC2和RC4 RSA IDEA DSA AES
3.加密算法的選擇
一般公司都會(huì)有一套自己的加密方案,按照公司接口文檔的規(guī)定去加密
二、MD5
1.簡單說明
MD5:全稱是Message Digest Algorithm 5,譯為“消息摘要算法第5版”
效果:對(duì)輸入信息生成唯一的.128位散列值(32個(gè)字符)
2.MD5的特點(diǎn)
(1)輸入兩個(gè)不同的明文不會(huì)得到相同的輸出值
(2)根據(jù)輸出值,不能得到原始的明文,即其過程不可逆
3.MD5的應(yīng)用
由于MD5加密算法具有較好的安全性,而且免費(fèi),因此該加密算法被廣泛使用
主要運(yùn)用在數(shù)字簽名、文件完整性驗(yàn)證以及口令加密等方面
4.MD5破解
MD5解密網(wǎng)站:
5.MD5改進(jìn)
現(xiàn)在的MD5已不再是絕對(duì)安全,對(duì)此,可以對(duì)MD5稍作改進(jìn),以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機(jī)串,然后再進(jìn)行MD5
先加密,后亂序:先對(duì)明文進(jìn)行MD5,然后對(duì)加密得到的MD5串的字符進(jìn)行亂序
總之宗旨就是:黑客就算攻破了數(shù)據(jù)庫,也無法解密出正確的明文
代碼示例:
復(fù)制代碼 代碼如下:
#import "HMViewController.h"
#import "NSString+Hash.h"
#define Salt @"fsdhjkfhjksdhjkfjhkd546783765"
@interface HMViewController ()
@end
@implementation HMViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self digest:@"123"]; //
[self digest:@"abc"];
[self digest:@"456"];
}
/**
* 直接用MD5加密
*/
- (NSString *)digest:(NSString *)str
{
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 加鹽
*/
- (NSString *)digest2:(NSString *)str
{
str = [str stringByAppendingString:Salt];
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 多次MD5
*/
- (NSString *)digest3:(NSString *)str
{
NSString *anwen = [str md5String];
anwen = [anwen md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 先加密, 后亂序
*/
- (NSString *)digest4:(NSString *)str
{
NSString *anwen = [str md5String];
// 注冊(cè): 123 ---- 2CB962AC59075B964B07152D234B7020
// 登錄: 123 --- 202CB962AC59075B964B07152D234B70
NSString *header = [anwen substringToIndex:2];
NSString *footer = [anwen substringFromIndex:2];
anwen = [footer stringByAppendingString:header];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
@end
(1)直接使用MD5加密(去MD5解密網(wǎng)站即可破解)
(2)使用加鹽(通過MD5解密之后,很容易發(fā)現(xiàn)規(guī)律)
(3)多次MD5加密(使用MD5解密之后,發(fā)現(xiàn)還是密文,那就接著MD5解密)
(4)先加密,后亂序(破解難度增加)
三、注冊(cè)和驗(yàn)證的數(shù)據(jù)處理過程
1.提交隱私數(shù)據(jù)的安全過程 – 注冊(cè)
2.提交隱私數(shù)據(jù)的安全過程 – 登錄
前言
軟件開發(fā)過程中,對(duì)數(shù)據(jù)進(jìn)行加密是保證數(shù)據(jù)安全的重要手段,常見的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前來說一般是不可逆的。
MD5生成的是固定的128bit,即128個(gè)0和1的二進(jìn)制位,而在實(shí)際應(yīng)用開發(fā)中,通常是以16進(jìn)制輸出的,所以正好就是32位的16進(jìn)制,說白了也就是32個(gè)16進(jìn)制的數(shù)字。
MD5主要特點(diǎn)是 不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一樣(也不是絕對(duì)的,但基本是不能一樣的)。
MD5算法還具有以下性質(zhì):
1、壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。
2、容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易。
3、抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別。
4、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
5、強(qiáng)抗碰撞:想找到兩個(gè)不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。
6、MD5加密是不可解密的,但是網(wǎng)上有一些解析MD5的,那個(gè)相當(dāng)于一個(gè)大型的數(shù)據(jù)庫,通過匹配MD5去找到原密碼。所以,只要在要加密的字符串前面加上一些字母數(shù)字符號(hào)或者多次MD5加密,這樣出來的結(jié)果一般是解析不出來的。
MD5的應(yīng)用:
由于MD5加密算法具有較好的安全性,而且免費(fèi),因此該加密算法被廣泛使用
大多數(shù)的'登錄功能向后臺(tái)提交密碼時(shí)都會(huì)使用到這種算法
注意點(diǎn):
(1)一定要和后臺(tái)開發(fā)人員約定好,MD5加密的位數(shù)是16位還是32位(大多數(shù)都是32位的),16位的可以通過32位的轉(zhuǎn)換得到。
(2)MD5加密區(qū)分 大小寫,使用時(shí)要和后臺(tái)約定好。
MD5解密:
解密網(wǎng)站:
為了讓MD5碼更加安全 涌現(xiàn)了很多其他方法 如加鹽。 鹽要足夠長足夠亂 得到的MD5碼就很難查到。
終端代碼:$ echo -n abc|openssl md5 給字符串a(chǎn)bc加密、
蘋果包裝了MD5加密的方法,使用起來十分的方便。
#import@interface MD5Encrypt : NSObject// MD5加密/**由于MD5加密是不可逆的,多用來進(jìn)行驗(yàn)證*/// 32位小寫+(NSString *)MD5ForLower32Bate:(NSString *)str;// 32位大寫+(NSString *)MD5ForUpper32Bate:(NSString *)str;// 16為大寫+(NSString *)MD5ForUpper16Bate:(NSString *)str;// 16位小寫+(NSString *)MD5ForLower16Bate:(NSString *)str;@end
#import "MD5Encrypt.h"#import@implementation MD5Encrypt#pragma mark - 32位 小寫+(NSString *)MD5ForLower32Bate:(NSString *)str{ //要進(jìn)行UTF8的轉(zhuǎn)碼 const char* input = [str UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(input, (CC_LONG)strlen(input), result); NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for (NSInteger i = 0; i CC_MD5_DIGEST_LENGTH; i++) { [digest appendFormat:@"%02x", result[i]]; } return digest;}#pragma mark - 32位 大寫+(NSString *)MD5ForUpper32Bate:(NSString *)str{ //要進(jìn)行UTF8的轉(zhuǎn)碼 const char* input = [str UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(input, (CC_LONG)strlen(input), result); NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for (NSInteger i = 0; i CC_MD5_DIGEST_LENGTH; i++) { [digest appendFormat:@"%02X", result[i]]; } return digest;}#pragma mark - 16位 大寫+(NSString *)MD5ForUpper16Bate:(NSString *)str{ NSString *md5Str = [self MD5ForUpper32Bate:str]; NSString *string; for (int i=0; i24; i++) { string=[md5Str substringWithRange:NSMakeRange(8, 16)]; } return string;}#pragma mark - 16位 小寫+(NSString *)MD5ForLower16Bate:(NSString *)str{ NSString *md5Str = [self MD5ForLower32Bate:str]; NSString *string; for (int i=0; i24; i++) { string=[md5Str substringWithRange:NSMakeRange(8, 16)]; } return string;}@end
一、批量修改md5值
ImageOptim Mac 下無損壓縮圖片工具,將包含圖片的文件夾拖入工具,會(huì)自動(dòng)掃描文件夾下的所有文件,自動(dòng)選擇最優(yōu)算法進(jìn)行優(yōu)化。一般第一次優(yōu)化項(xiàng)目時(shí),會(huì)有幾M到10幾M的優(yōu)化效果。
ImageMagick ImageMagick: 是一款創(chuàng)建、編輯、合成,轉(zhuǎn)換圖像的命令行工具。 通過 brew 安裝 imagemagick
brew install imagemagick
壓縮文件夾下所有 png 文件,會(huì)修改 md5 值 ,進(jìn)入存放圖片的文件夾,運(yùn)行命令即可
cd 文件路徑find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;
二、單個(gè)修改md5值(mp4等類型)
(1)查看 md5 值
打開 Terminal (終端),輸入「md5」,空格,文件路徑,最終命令類似于:
//方式一md5 文件路徑//方式二cd 文件路徑md5 xxx.mp4//方式三md5-q 文件路徑
(2)修改 md5 值
修改文件的md5值命令,輸入echo 任意字符 文件路徑,最終命令類似于:
echo xxx 文件路徑
//MD5加密方法
-(NSString *)md5:(NSString *)input{
const char *cStr = [input UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, strlen(cStr), digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return? output;
}
//調(diào)用MD5方法:
NSString *str = @"123456";
NSString *result = [self md5:str];
NSLog(@"%@",result);
base64加密
NSString *urlStr = @"?";
//加密
NSData *bodyData = [urlStr dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"bodyData---%@",bodyData);
NSString *base64Str = [bodyData base64EncodedStringWithOptions:0];
NSLog(@"base64----%@",base64Str);
NSString *urlString = [urlStr stringByAppendingString:base64Str];
NSURL *urlShare = [NSURL URLWithString:urlString];
//解
NSData *jieData = [[NSData alloc] initWithBase64EncodedString:base64Str options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSString *jieStr = [[NSString alloc] initWithData:jieData encoding:NSUTF8StringEncoding];
NSLog(@"jieStr---%@",jieStr);
當(dāng)然一般我們現(xiàn)有的涉及到文件/信息加密,或提高數(shù)據(jù)安全級(jí)別一般都會(huì)選擇 CommonCrypto 來完成任務(wù)。
可以從Oc 上面先了解它的函數(shù)聲明:
Swift + 3DES
補(bǔ)充:
CCOperation (操作)、 CCAgorithm (算法) 和 CCOptions (設(shè)置)本質(zhì)上就是 uint32_t (一個(gè)占32位存儲(chǔ)的 unsigned int ),所以我們可以通過 CommonCrypto 常量來構(gòu)造它們。
附帶一個(gè)Swift 版的 Base64 + String
swift + MD5
Oc + MD5
新聞標(biāo)題:ios開發(fā)md5,iOs開發(fā)高級(jí)工程師
轉(zhuǎn)載來源:http://chinadenli.net/article3/dsiiois.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、ChatGPT、全網(wǎng)營銷推廣、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)