c#的AES加密解密
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace test
{
class Class1
{
static void Main( string[ ] args)
{
Console.WriteLine( "I am comming" ) ;
String source = "Test String" ;
String encryptData = Class1.Encrypt( source, "1234567812345678" , "1234567812345678" ) ;
Console.WriteLine( "=1==" ) ;
Console.WriteLine( encryptData) ;
Console.WriteLine( "=2==" ) ;
String decryptData = Class1.Decrypt( "2fbwW9+8vPId2/foafZq6Q==" , "1234567812345678" , "1234567812345678" ) ;
Console.WriteLine( decryptData) ;
Console.WriteLine( "=3==" ) ;
Console.WriteLine( "I will go out" ) ;
}
public static string Encrypt( string toEncrypt, string key, string iv)
{
byte[ ] keyArray = UTF8Encoding.UTF8.GetBytes( key) ;
byte[ ] ivArray = UTF8Encoding.UTF8.GetBytes( iv) ;
byte[ ] toEncryptArray = UTF8Encoding.UTF8.GetBytes( toEncrypt) ;
RijndaelManaged rDel = new RijndaelManaged( ) ;
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Zeros;
ICryptoTransform cTransform = rDel.CreateEncryptor( ) ;
byte[ ] resultArray = cTransform.TransformFinalBlock( toEncryptArray, 0 , toEncryptArray.Length) ;
return Convert.ToBase64String( resultArray, 0 , resultArray.Length) ;
}
public static string Decrypt( string toDecrypt, string key, string iv)
{
byte[ ] keyArray = UTF8Encoding.UTF8.GetBytes( key) ;
byte[ ] ivArray = UTF8Encoding.UTF8.GetBytes( iv) ;
byte[ ] toEncryptArray = Convert.FromBase64String( toDecrypt) ;
RijndaelManaged rDel = new RijndaelManaged( ) ;
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Zeros;
ICryptoTransform cTransform = rDel.CreateDecryptor( ) ;
byte[ ] resultArray = cTransform.TransformFinalBlock( toEncryptArray, 0 , toEncryptArray.Length) ;
return UTF8Encoding.UTF8.GetString( resultArray) ;
}
}
}
Java的AES加密解密
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.junit.Test;
.. .
@Test
public void testCrossLanguageEncrypt( ) throws Exception{
System.out.println( encrypt( )) ;
System.out.println( desEncrypt( )) ;
}
public static String encrypt( ) throws Exception {
try {
String data = "Test String" ;
String key = "1234567812345678" ;
String iv = "1234567812345678" ;
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" ) ;
int blockSize = cipher.getBlockSize( ) ;
byte[ ] dataBytes = data.getBytes( ) ;
int plaintextLength = dataBytes.length;
if ( plaintextLength % blockSize != 0 ) {
plaintextLength = plaintextLength + ( blockSize - ( plaintextLength % blockSize)) ;
}
byte[ ] plaintext = new byte[ plaintextLength] ;
System.arraycopy( dataBytes, 0 , plaintext, 0 , dataBytes.length) ;
SecretKeySpec keyspec = new SecretKeySpec( key.getBytes( ) , "AES" ) ;
IvParameterSpec ivspec = new IvParameterSpec( iv.getBytes( )) ;
cipher.init( Cipher.ENCRYPT_MODE, keyspec, ivspec) ;
byte[ ] encrypted = cipher.doFinal( plaintext) ;
return new sun.misc.BASE64Encoder( ) .encode( encrypted) ;
} catch ( Exception e) {
e.printStackTrace( ) ;
return null;
}
}
public static String desEncrypt( ) throws Exception {
try
{
String data = "2fbwW9+8vPId2/foafZq6Q==" ;
String key = "1234567812345678" ;
String iv = "1234567812345678" ;
byte[ ] encrypted1 = new sun.misc.BASE64Decoder( ) .decodeBuffer( data) ;
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" ) ;
SecretKeySpec keyspec = new SecretKeySpec( key.getBytes( ) , "AES" ) ;
IvParameterSpec ivspec = new IvParameterSpec( iv.getBytes( )) ;
cipher.init( Cipher.DECRYPT_MODE, keyspec, ivspec) ;
byte[ ] original = cipher.doFinal( encrypted1) ;
String originalString = new String( original) ;
return originalString;
}
catch ( Exception e) {
e.printStackTrace( ) ;
return null;
}
}
php的AES加密解密
< ?php
$privateKey = "1234567812345678" ;
$iv = "1234567812345678" ;
$data = "Test String" ;
//加密
$encrypted = mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $privateKey , $data , MCRYPT_MODE_CBC, $iv ) ;
echo( $encrypted ) ;
echo '<br/>' ;
echo( base64_encode( $encrypted )) ;
echo '<br/>' ;
//解密
$encryptedData = base64_decode( "2fbwW9+8vPId2/foafZq6Q==" ) ;
$decrypted = mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $privateKey , $encryptedData , MCRYPT_MODE_CBC, $iv ) ;
echo( $decrypted ) ;
?>
vue的AES加密解密
import CryptoJS from "crypto-js" ;
var key = CryptoJS.enc.Latin1.parse( "1234567812345678" ) ;
var iv = CryptoJS.enc.Latin1.parse( "1234567812345678" ) ;
// 解密
function dataDecrypt( encrypted) {
var decrypted = CryptoJS.AES.decrypt( encrypted, key, {
iv: iv,
padding: CryptoJS.pad.ZeroPadding,
} ) ;
return decrypted.toString( CryptoJS.enc.Utf8) ;
}
// 加密
function dataEncrypt( data) {
var encrypted = CryptoJS.AES.encrypt(
data,
key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding,
}
) ;
return CryptoJS.enc.Base64.stringify( encrypted.ciphertext) ;
}
export {
dataDecrypt, dataEncrypt
}
python的AES加密解密
#!/usr/bin/env python
from Crypto.Cipher import AES
import base64
PADDING = '\0'
pad_it = lambda s: s+( 16 - len( s) %16) *PADDING
key = '1234567812345678'
iv = '1234567812345678'
source = 'Test String'
generator = AES.new( key, AES.MODE_CBC, iv)
crypt = generator.encrypt( pad_it( source))
cryptedStr = base64.b64encode( crypt)
print cryptedStr
generator = AES.new( key, AES.MODE_CBC, iv)
recovery = generator.decrypt( crypt)
print recovery.rstrip( PADDING)