JAVA
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import android.util.Base64;
public class AESCrypt {
private final Cipher cipher;
private final SecretKeySpec key;
private AlgorithmParameterSpec spec;
public static final String SEED_16_CHARACTER = "U1MjU1M0FDOUZ.Qz";
public AESCrypt() throws Exception {
// hash password with SHA-256 and crop the output to 128-bit for key
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(SEED_16_CHARACTER.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
key = new SecretKeySpec(keyBytes, "AES");
spec = getIV();
}
public AlgorithmParameterSpec getIV() {
byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
IvParameterSpec ivParameterSpec;
ivParameterSpec = new IvParameterSpec(iv);
return ivParameterSpec;
}
public String encrypt(String plainText) throws Exception {
cipher.init(Cipher.ENCRYPT_MODE, key, spec);
byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
String encryptedText = new String(Base64.encode(encrypted,
Base64.DEFAULT), "UTF-8");
return encryptedText;
}
public String decrypt(String cryptedText) throws Exception {
cipher.init(Cipher.DECRYPT_MODE, key, spec);
byte[] bytes = Base64.decode(cryptedText, Base64.DEFAULT);
byte[] decrypted = cipher.doFinal(bytes);
String decryptedText = new String(decrypted, "UTF-8");
return decryptedText;
}
}
PHP
class MCrypt {
private $iv = '0000000000000000'; #Same as in JAVA
private $key = 'U1MjU1M0FDOUZ.Qz'; #Same as in JAVA
function __construct() {
$this->key = hash('sha256', $this->key, true);
}
function encrypt($str) {
$iv = $this->iv;
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($td, $this->key, $iv);
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
$encrypted = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return base64_encode($encrypted);
}
function decrypt($code) {
$iv = $this->iv;
$td = mcrypt_module_open('rijndael-128', '', 'cbc', '');
mcrypt_generic_init($td, $this->key, $iv);
$str = mdecrypt_generic($td, base64_decode($code));
$block = mcrypt_get_block_size('rijndael-128', 'cbc');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $str;
//return $this->strippadding($str);
}
/*
For PKCS7 padding
*/
private function addpadding($string, $blocksize = 16) {
$len = strlen($string);
$pad = $blocksize - ($len % $blocksize);
$string .= str_repeat(chr($pad), $pad);
return $string;
}
private function strippadding($string) {
$slast = ord(substr($string, -1));
$slastc = chr($slast);
$pcheck = substr($string, -$slast);
if (preg_match("/$slastc{" . $slast . "}/", $string)) {
$string = substr($string, 0, strlen($string) - $slast);
return $string;
} else {
return false;
}
}
}
$encryption = new MCrypt();
echo $encryption->encrypt('123456') . "<br/>";
echo $encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w==');
- IM api調試接口
- 群主踢人
- 群成員退群
- 用戶創建群
- 群主修改群信息
- 群主轉換
- 群成員拉好友入群
- 翻譯
- 客戶端獲取手機驗證碼
- SHOP
- 團隊限購
- 常用
- 銀聯支付
- 多語言
- API配置都對,但接口還是報錯,解決方法
- 商品評分
- 圖片延時加載
- 買家申請“退款/退貨”
- 商家處理“退款/退貨”申請
- 平臺“退款/退貨”審核
- 添加發票
- 提交訂單
- 確認訂單
- 運費和售賣區域查詢
- 購物車商品刪除
- 領取代金券
- APP打包H5通用功能
- 首頁掃一掃
- 分享事件監聽
- 支付事件監聽
- SHOP_ADMIN
- 導出xls
- 彈出窗口
- 計劃任務
- SOHP_WAP
- 首頁聊天消息
- Ucenter
- 彈出窗口
- 微博登錄
- 獲取會員地址
- 商城配置數據庫權限
- 商城后臺供應商SQL
- 去分銷
- paycenter_ucenter_shop通信說明
- AES
- 紅包
- goods_common
- 紅包退回
- 微信小程序
- 手機驗證碼API
- APP充值
- 攝像頭cronjob
- WEBPOS自動加載權限
- 商城子帳號
- 云版升級注意事項
- 集群服務