吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3356|回复: 8
收起左侧

[会员申请] 申请会员ID:caoxueqiang

[复制链接]
吾爱游客  发表于 2015-7-11 11:43
1、申 请 I D :caoxueqiang
2、个人邮箱:caoxueqiang@163.com
3、原创技术文章:Android、iOS、windows下通用的des加密解密方法


最近写了一个手机程序需要在Android、iOS、windows三个系统下生成相同的注册码

在网上找了很多代码但测试都没有通过,

最终经过研究对比修改后,于实现了三个平台通用方法。

三平台下截图

Android平台

Android平台

iOS平台

iOS平台

3pc.jpg.thumb.jpg



代码
java
public class DES
{
        private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };

        public static String encryptDES(String encryptString, String encryptKey)
                        throws Exception
        {
                // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
                IvParameterSpec zeroIv = new IvParameterSpec(iv);
                SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
                byte[] encryptedData = cipher.doFinal(encryptString.getBytes());

                return Base64.encode(encryptedData);
        }

        public static byte[] encryptDESBytes(byte[] encryptBytes, String encryptKey)
                        throws Exception
        {
                // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
                IvParameterSpec zeroIv = new IvParameterSpec(iv);
                SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
                byte[] encryptedData = cipher.doFinal(encryptBytes);

                return encryptedData;
        }

        public static String decryptDES(String decryptString, String decryptKey)
                        throws Exception
        {
                byte[] byteMi = Base64.decode(decryptString);
                IvParameterSpec zeroIv = new IvParameterSpec(iv);
                // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
                SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
                cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
                byte decryptedData[] = cipher.doFinal(byteMi);

                return new String(decryptedData, "UTF-8");
        }

        public static byte[] decryptDESBytes(byte[] decryptBytes, String decryptKey)
                        throws Exception
        {
                IvParameterSpec zeroIv = new IvParameterSpec(iv);
                // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
                SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
                cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
                byte[] decryptedData = cipher.doFinal(decryptBytes);

                return decryptedData;
        }

        public static String parseByte2HexStr(byte buf[])
        {
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < buf.length; i++)
                {
                        String hex = Integer.toHexString(buf & 0xFF);
                        if (hex.length() == 1)
                        {
                                hex = '0' + hex;
                        }
                        sb.append(hex.toUpperCase());
                }
                return sb.toString();
        }
}
代码
OC
@implementation DES
const Byte iv[] = {1,2,3,4,5,6,7,8};
const int bufferSize = 1024*1024*2;    // 1024x1024  1048576
static unsigned char buffer[bufferSize];

+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key
{
    NSString *ciphertext = nil;
    NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
    NSUInteger dataLength = [textData length];
    //unsigned char buffer[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);
    if (cryptStatus == kCCSuccess) {
        NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
        ciphertext = [Base64 encode:data];
        //ciphertext = [GTMBase64 encodeBase64Data:data];
    }
    return ciphertext;
}

+(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key
{
    NSString *plaintext = nil;
    NSData *cipherdata = [Base64 decode:cipherText];
    //NSData *cipherdata = [GTMBase64 decodeBase64String:cipherText];
    //unsigned char buffer[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];
        NSLog(@"解密完成!");
    }
    return plaintext;
}


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2015-7-11 20:27
【开放注册公告】吾爱破解论坛2015年7月21日暑假开放注册公告
http://www.52pojie.cn/thread-381155-1-1.html



最近开放注册,自己开放注册的时候来注册吧。
bbc123 发表于 2015-7-11 20:35
Arlenhy 发表于 2015-7-11 20:36
Hmily 发表于 2015-7-11 20:27
最近开放注册,自己开放注册的时候来注册吧。

H大大,这样好吗?人家都把技术文章贴出来了,还让人家在开放的时候注册吗
LaoJII 发表于 2015-7-11 20:39
开放注册时间确实快到了,楼主稍微等等也行。
kelamoyujuzhen 发表于 2015-7-12 07:19
21号开放注册,到时候再来吧
caoxueqiang 发表于 2015-7-21 14:39
顶一下我自己的帖子!
头像被屏蔽
Hmily我爱你 发表于 2015-7-21 20:23
提示: 作者被禁止或删除 内容自动屏蔽
大头狗 发表于 2015-7-22 05:47 来自手机
有没有简单一点的教程
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 20:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表