OC des加密演算法演算法實現
效果圖:
1.雙方約定好祕鑰
2.加密utl
// // EncryptUtl.m // L22test // // Created by Liyanjun on 16/7/13. // Copyright © 2016年 Liyanjun. All rights reserved. // #import "EncryptUtl.h" #import <CommonCrypto/CommonCryptor.h> #import "GTMBase64.h" @implementation EncryptUtl #pragma mark- 產生金鑰 +(NSString *)makeKey{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMdd HH:mm:ss"]; NSDate *date = [NSDate date]; NSString *firstDate = [dateFormatter stringFromDate:date]; return firstDate; } #pragma mark- 加密演算法 const Byte iv[] = {1,2,3,4,5,6,7,8}; +(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key { NSString *ciphertext = nil; NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger dataLength = [textData length]; // unsigned char buffer[1024]; size_t bufferSize = dataLength + kCCBlockSizeDES; void *buffer = malloc(bufferSize); memset(buffer, 0, sizeof(char)); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [textData bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); NSLog(@"cryptStatus=%d",cryptStatus); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; ciphertext = [GTMBase64 encodeBase64Data:data]; } return ciphertext; } +(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key { NSString *plaintext = nil; NSData *cipherdata = [GTMBase64 decodeString:cipherText]; // unsigned char buffer[102400]; NSUInteger dataLength = [cipherdata length]; size_t bufferSize = dataLength + kCCBlockSizeDES; void *buffer = malloc(bufferSize); memset(buffer, 0, sizeof(char)); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [cipherdata bytes], [cipherdata length], buffer, bufferSize, &numBytesDecrypted); if(cryptStatus == kCCSuccess) { NSData *plaindata = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; plaintext = [[NSString alloc]initWithData:plaindata encoding:NSUTF8StringEncoding]; } return plaintext; } @end
加密測試文件
// // main.m // L22test // // Created by Liyanjun on 16/1/16. // Copyright © 2016年 Liyanjun. All rights reserved. // #import <Foundation/Foundation.h> #import "EncryptUtl.h" #import "AppUtil.h" //方法1 #define POINT struct point int main(int argc, const char * argv[]) { @autoreleasepool { NSString*
[email protected]"測試加密資料"; NSString* [email protected]"b4196703d61af1bc87e20f2111143883"; NSLog(@"金鑰是%@",key); NSString* toString1=[EncryptUtl encryptUseDES:fromString key:key]; NSLog(@"加密後是%@",toString1); NSLog(@"解密後是%@",[EncryptUtl decryptUseDES:toString1 key:key]); } return 0; }
demo下載:
http://download.csdn.net/detail/liyanjun201/9749070
相關推薦
OC des加密演算法演算法實現
效果圖: 1.雙方約定好祕鑰 2.加密utl // // EncryptUtl.m // L22test // // Created by Liyanjun on 16/7/13. // Copyright © 2016年 Liyanjun. All right
DES加密解密演算法C語言程式碼實現
程式碼: 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 /*------------------------ 5 定義列舉型全域性變數 6 -----
Java實現DES加密解密演算法
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFact
網路安全學習之C語言版DES加密解密演算法的程式設計與實現
其實明白了DES演算法的流程程式設計實現是不難的,當然可能會在S盒實現那碰到點問題。下面的DES演算法包括加密和解密兩個功能,主要有生成16個子金鑰和DES演算法的主程式組成。輸出的資訊有16輪子金鑰以及每輪的中間值以及最後的結果。具體的程式碼中都有註釋,就看程式碼吧。關於D
C#寫Des加密解密演算法
馬上就要實習了,求大大們介紹工作。QQ:1028962069 原始碼地址 http://download.csdn.net/detail/h1028962069/8618367 我只寫關鍵程式碼。 介面如下 類 using System; using System.Col
php和c#一致的DES加密解密演算法類
DES加解密演算法,在C#與PHP中的通用類。 注意: 1、類中的祕鑰key跟向量iv,均用的同樣的值 2、編碼均採用的utf-8 以下為具體程式碼,可以直接複製去進行實際測試 C#版程式碼: using System; using System.Data;
最簡單的DES加密算法實現
ava source bytes gen div this except vax odi Base64.java package com.mstf.des; import java.io.UnsupportedEncodingException; /*
DES加密:8051實現(C語言) & FPGA實現(VHDL+NIOS II)
本文將利用C語言和VHDL語言分別實現DES加密,並在8051和FPGA上測試。 終於有機會閱讀《深入淺出密碼學一書》,趁此機會深入研究了DES加密的思想與實現。本文將分為兩部分,第一部分為簡單的C語言實現,第二部分為FPGA實現並在NIOS II核上測試該模
DES加密解密->java實現
DES加密解密涉及到的JAVA類 Cipher 此類為加密和解密提供密碼功能。它構成了 Java Cryptographic Extension (JCE) 框架的核心。 為建立 Cipher 物件,應用程式呼叫 Cipher 的 getInstan
DES加密演算法的java實現(基於java類庫)
嗯嗯........這個是我新開的部落格上的第一篇的文章,這裡小白希望自己的技術能夠一天比一天好(p≧w≦q),加油! 好吧,現在來一個基於java類庫的DES加密演算法的實現吧~網上不少的程式碼要不執行有問題,要不就是簡簡單單內建一個固定的加密字串就簡單完事了。好吧,我承認我現在是為懶人服務
DES加密演算法Golang實現
DES介紹 資料加密標準(英語:Data Encryption Standard,縮寫為 DES)是一種對稱金鑰加密塊密碼演算法,1976年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),隨後在國際上廣泛流傳開來。它基於使用56位金鑰的對稱演算法。
[Python]實現DES加密演算法和3DES加密演算法
pyDes.py ############################################################################# # Documentation
基於java類庫的DES加密演算法實現
真正的核心程式碼就是呼叫java類庫實現的那部分 加密部分核心程式碼 //Cipher物件實際完成加密操作 Cipher cipher = Cipher.getInstance("DES"); //用密匙初始化Cipher物件,ENCRYPT_MODE用於
S-DES加密演算法介紹與實現
為了更好地理解DES演算法,美國聖克拉拉大學的Edward Schaefer教授於1996年開發了Simplfied DES方案,簡稱S-DES方案。它是一個供教學而非安全使用的加密演算法,它與DES的特性和結構類似,但引數小,明文分組為8位,主金鑰分組為10位
Java實現檔案的DES加密與解密演算法
一、基礎知識 根據金鑰型別不同將現代密碼技術分為兩類:對稱加密演算法(祕金鑰匙加密)和非對稱加密演算法(公開金鑰加密)。對稱鑰匙加密系統是加密和解密均採用同一把祕金鑰匙,而且通訊雙方都必須獲得這把鑰匙,並保持鑰匙的祕密。非對稱金鑰加密系統採用的加金鑰匙(公鑰)和
非對稱加密演算法:實現ssh免密碼登入
**描述:利用非對稱加密演算法,實現兩臺主機之間可以免密碼直接登入 ,如下圖:** 整個實驗的原理如下圖: 具體步驟如下: 1、先準備好實驗需要的環境(兩臺虛擬機器–A:192.168.72.73,B:192.168.72.23),此時,我們遠端登入主機B,
資料的加密傳輸——微控制器上實現TEA加密解密演算法
http://www.eeworld.com.cn/mcu/article_2016121632367.html 各位大俠在做資料傳輸時,有沒有考慮過把資料加密起來進行傳輸,若在串列埠或者無線中把所要傳的資料加密起來,豈不是增加了通訊的安全性。常用的加密解密演算法比如DES、RSA等,受限於微控
MD5加密演算法Golang實現
什麼是MD5? MD5訊息摘要演算法(Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值,用於確保資訊傳輸完整一致。MD5有MD4、MD3、MD2改進而來,主要增強演算法複雜度和不可逆性。MD5廣泛使用在為檔案傳
Des 加密演算法java工具類
package com.lock.demo.service; import org.apache.tomcat.util.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.SecretKey; import ja
base64加密演算法C++實現
base64編碼原理:維基百科 - Base64 其實編碼規則很簡單,將字串按每三個字元組成一組,因為每個字元的 ascii 碼對應 0~127 之間(顯然,不考慮其他字符集編碼),即每個字元的二進位制以 8 bit 儲存,$ 3 \times 8 = 4 \times 6 $,這樣就可以很方便的轉