Android 与C# DES+Base64加密的互通

本文提供了Java和C#两种语言中实现DES加密的具体代码样例,展示了如何使用这两种语言进行数据加密,包括创建密钥、初始化加密器及执行加密过程。
java代码:
 public static String encryptForDES(Stringsouce, String key) throws InvalidKeyException,NoSuchAlgorithmException, InvalidKeySpecException,NoSuchPaddingException, IllegalBlockSizeException,
    BadPaddingException,UnsupportedEncodingException {
    //DES算法要求有一个可信任的随机数源
    SecureRandom sr = newSecureRandom();
    //从原始密匙数据创建DESKeySpec对象
    DESKeySpec dks = newDESKeySpec(key.getBytes());
    //创建一个密匙工厂,然后用它把DESKeySpec转换成 一个SecretKey对象
    SecretKeyFactorykeyFactory = SecretKeyFactory.getInstance("DES");
    SecretKey key1 =keyFactory.generateSecret(dks);
    //Cipher对象实际完成加密操作
    Cipher cipher =Cipher.getInstance("DES");
    // 用密匙初始化Cipher对象
   cipher.init(Cipher.ENCRYPT_MODE, key1, sr);
    // 现在,获取数据并加密
    byte encryptedData[] =cipher.doFinal(souce.getBytes());
    //通过BASE64位编码成字符创形式
    
    return newString(Base64.encode(encryptedData, Base64.DEFAULT),"UTF-8");
    }

C#代码:
using System.Security.Cryptography;
using System.IO;

// des加密函数
public string Encrypt(string pToEncrypt, string sKey)
{
// 创建des加密没
using (DESCryptoServiceProvider des = newDESCryptoServiceProvider())
{
// 得到UTF-8的数据源
byte[] inputByteArray =Encoding.UTF8.GetBytes(pToEncrypt);
// 设置key和iv密钥
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
//由于java是使用默认加密模式,C#默认是CBC,需要修改为ECB
des.Mode =CipherMode.ECB;
// 创建数据流并进行加密
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
// 关闭数据流
ms.Close();
return Convert.ToBase64String(ms.ToArray());
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值