· 9 years ago · Nov 30, 2016, 11:46 AM
1private String _encrypt(String message, String secretKey) throws Exception {
2
3 MessageDigest md = MessageDigest.getInstance("MD5");
4 byte[] digestOfPassword = md.digest(secretKey.getBytes("utf-8"));
5 byte[] keyBytes = Arrays.copyOf(digestOfPassword, 16);
6
7 SecretKey key = new SecretKeySpec(keyBytes, "DESede/ECB/PKCS7Padding");
8 Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS7Padding");
9 cipher.init(Cipher.ENCRYPT_MODE, key);
10 byte[] plainTextBytes = message.getBytes("utf-8");
11
12
13 byte[] buf = cipher.doFinal(plainTextBytes);
14 byte [] base64Bytes = Base64.encodeBase64(buf);
15 String base64EncryptedString = new String(base64Bytes);
16
17 return base64EncryptedString;
18 }
19
20func myEncrypt(encryptData:String) -> String?{
21
22 let myKeyData : NSData = ("Fanava@Wrapper!1395" as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
23 let myRawData : NSData = encryptData.data(using: String.Encoding.utf8)! as NSData
24
25
26 let mykeydatamd5 = Data(bytes: myKeyData.bytes, count: 24) // this key convert to 24 bytes but does not hash to md5
27
28 let mykeydatamd5 = Data(bytes: myKeyData.md5().bytes, count: 24) // this line converted key to md5(), 24byte, but it
29
30
31 let buffer_size : size_t = myRawData.length + kCCBlockSize3DES
32 let buffer = UnsafeMutablePointer<NSData>.allocate(capacity: buffer_size)
33 var num_bytes_encrypted : size_t = 0
34
35 let operation: CCOperation = UInt32(kCCEncrypt)
36 let algoritm: CCAlgorithm = UInt32(kCCAlgorithm3DES)
37 let options: CCOptions = UInt32(kCCOptionECBMode | kCCOptionPKCS7Padding)
38 let keyLength = size_t(kCCKeySize3DES)
39
40 let Crypto_status: CCCryptorStatus = CCCrypt(operation, algoritm, options, mykeydatamd5.bytes , keyLength, nil, myRawData.bytes, myRawData.count, buffer, buffer_size, &num_bytes_encrypted)
41
42 if UInt32(Crypto_status) == UInt32(kCCSuccess){
43
44 let myResult: NSData = NSData(bytes: buffer, length: num_bytes_encrypted)
45
46 free(buffer)
47
48 return myResult.base64EncodedString(options: [])
49 }else{
50 free(buffer)
51
52 return nil
53 }
54 }