android java加密解密_Android: JAVA和C# 3DES加密解密

//DES3加密解密///publicclassDes3

{#regionCBC模式**//DES3 CBC模式加密//密钥///IV///明文的byte数组///密文的byte数组publicstaticbyte[] Des3EncodeCBC(byte[] key,byte[] iv,byte[] data )

{//复制于MSDNtry{//Create a MemoryStream.MemoryStream mStream=newMemoryStream();

TripleDESCryptoServiceProvider tdsp=newTripleDESCryptoServiceProvider();

tdsp.Mode=CipherMode.CBC;//默认值tdsp.Padding=PaddingMode.PKCS7;//默认值//Create a CryptoStream using the MemoryStream//and the passed key and initialization vector (IV).CryptoStream cStream=newCryptoStream( mStream,

tdsp.CreateEncryptor( key, iv ),

CryptoStreamMode.Write );//Write the byte array to the crypto stream and flush it.cStream.Write( data,0, data.Length );

cStream.FlushFinalBlock();//Get an array of bytes from the//MemoryStream that holds the//encrypted data.byte[] ret=mStream.ToArray();//Close the streams.cStream.Close();

mStream.Close();//Return the encrypted buffer.returnret;

}catch( CryptographicException e )

{

Console.WriteLine("A Cryptographic error occurred: {0}", e.Message );returnnull;

}

}//DES3 CBC模式解密//密钥///IV///密文的byte数组///明文的byte数组publicstaticbyte[] Des3DecodeCBC(byte[] key,byte[] iv,byte[] data )

{try{//Create a new MemoryStream using the passed//array of encrypted data.MemoryStream msDecrypt=newMemoryStream( data );

TripleDESCryptoServiceProvider tdsp=newTripleDESCryptoServiceProvider();

tdsp.Mode=CipherMode.CBC;

tdsp.Padding=PaddingMode.PKCS7;//Create a CryptoStream using the MemoryStream//and the passed key and initialization vector (IV).CryptoStream csDecrypt=newCryptoStream( msDecrypt,

tdsp.CreateDecryptor( key, iv ),

CryptoStreamMode.Read );//Create buffer to hold the decrypted data.byte[] fromEncrypt=newbyte[data.Length];//Read the decrypted data out of the crypto stream//and place it into the temporary buffer.csDecrypt.Read( fromEncrypt,0, fromEncrypt.Length );//Convert the buffer into a string and return it.returnfromEncrypt;

}catch( CryptographicException e )

{

Console.WriteLine("A Cryptographic error occurred: {0}", e.Message );returnnull;

}

}#endregion#regionECB模式//DES3 ECB模式加密//密钥///IV(当模式为ECB时,IV无用)///明文的byte数组///密文的byte数组publicstaticbyte[] Des3EncodeECB(byte[] key,byte[] iv,byte[] data )

{try{//Create a MemoryStream.MemoryStream mStream=newMemoryStream();

TripleDESCryptoServiceProvider tdsp=newTripleDESCryptoServiceProvider();

tdsp.Mode=CipherMode.ECB;

tdsp.Padding=PaddingMode.PKCS7;//Create a CryptoStream using the MemoryStream//and the passed key and initialization vector (IV).CryptoStream cStream=newCryptoStream( mStream,

tdsp.CreateEncryptor( key, iv ),

CryptoStreamMode.Write );//Write the byte array to the crypto stream and flush it.cStream.Write( data,0, data.Length );

cStream.FlushFinalBlock();//Get an array of bytes from the//MemoryStream that holds the//encrypted data.byte[] ret=mStream.ToArray();//Close the streams.cStream.Close();

mStream.Close();//Return the encrypted buffer.returnret;

}catch( CryptographicException e )

{

Console.WriteLine("A Cryptographic error occurred: {0}", e.Message );returnnull;

}

}//DES3 ECB模式解密//密钥///IV(当模式为ECB时,IV无用)///密文的byte数组///明文的byte数组publicstaticbyte[] Des3DecodeECB(byte[] key,byte[] iv,byte[] data )

{try{//Create a new MemoryStream using the passed//array of encrypted data.MemoryStream msDecrypt=newMemoryStream( data );

TripleDESCryptoServiceProvider tdsp=newTripleDESCryptoServiceProvider();

tdsp.Mode=CipherMode.ECB;

tdsp.Padding=PaddingMode.PKCS7;//Create a CryptoStream using the MemoryStream//and the passed key and initialization vector (IV).CryptoStream csDecrypt=newCryptoStream( msDecrypt,

tdsp.CreateDecryptor( key, iv ),

CryptoStreamMode.Read );//Create buffer to hold the decrypted data.byte[] fromEncrypt=newbyte[data.Length];//Read the decrypted data out of the crypto stream//and place it into the temporary buffer.csDecrypt.Read( fromEncrypt,0, fromEncrypt.Length );//Convert the buffer into a string and return it.returnfromEncrypt;

}catch( CryptographicException e )

{

Console.WriteLine("A Cryptographic error occurred: {0}", e.Message );returnnull;

}

}#endregion//类测试///publicstaticvoidTest()

{

System.Text.Encoding utf8=System.Text.Encoding.UTF8;//key为abcdefghijklmnopqrstuvwx的Base64编码byte[] key=Convert.FromBase64String("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4");byte[] iv=newbyte[] {1,2,3,4,5,6,7,8};//当模式为ECB时,IV无用byte[] data=utf8.GetBytes("中国ABCabc123");

System.Console.WriteLine("ECB模式:");byte[] str1=Des3.Des3EncodeECB( key, iv, data );byte[] str2=Des3.Des3DecodeECB( key, iv, str1 );

System.Console.WriteLine( Convert.ToBase64String( str1 ) );

System.Console.WriteLine( System.Text.Encoding.UTF8.GetString( str2 ) );

System.Console.WriteLine();

System.Console.WriteLine("CBC模式:");byte[] str3=Des3.Des3EncodeCBC( key, iv, data );byte[] str4=Des3.Des3DecodeCBC( key, iv, str3 );

System.Console.WriteLine( Convert.ToBase64String( str3 ) );

System.Console.WriteLine( utf8.GetString( str4 ) );

System.Console.WriteLine();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值