本文目錄一覽:
- 1、如何將PHP轉換成JAVA
- 2、PHP代碼轉為java代碼
- 3、怎麼把php AES128的代碼轉成java
- 4、請把一小段PHP代碼換成一段的JAVA代碼~非常感謝
- 5、php示例怎麼轉java?
- 6、PHP代碼變成java代碼
如何將PHP轉換成JAVA
先了解PHP的基本語言結構,然後去嘗試讀懂PHP項目的代碼,然後就按著代碼功能,用JAVA語言重寫一遍就是了,暫不知道有直接從PHP代碼轉成JAVA的工具。。。
PHP代碼轉為java代碼
沒法轉的,這個php中調用了不少外部對象,沒人能猜到那些是什麼內容的。
怎麼把php AES128的代碼轉成java
public class SimpleCrypto {
public static String encrypt(String seed, String cleartext) throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] result = encrypt(rawKey, cleartext.getBytes());
return toHex(result);
}
public static String decrypt(String seed, String encrypted) throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] enc = toByte(encrypted);
byte[] result = decrypt(rawKey, enc);
return new String(result);
}
private static byte[] getRawKey(byte[] seed) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance(“AES”);
SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”);
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
return raw;
}
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);
Cipher cipher = Cipher.getInstance(“AES”);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}
private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);
Cipher cipher = Cipher.getInstance(“AES”);
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}
public static String toHex(String txt) {
return toHex(txt.getBytes());
}
public static String fromHex(String hex) {
return new String(toByte(hex));
}
public static byte[] toByte(String hexString) {
int len = hexString.length()/2;
byte[] result = new byte[len];
for (int i = 0; i len; i++)
result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
return result;
}
public static String toHex(byte[] buf) {
if (buf == null)
return “”;
StringBuffer result = new StringBuffer(2*buf.length);
for (int i = 0; i buf.length; i++) {
appendHex(result, buf[i]);
}
return result.toString();
}
private final static String HEX = “0123456789ABCDEF”;
private static void appendHex(StringBuffer sb, byte b) {
sb.append(HEX.charAt((b4)0x0f)).append(HEX.charAt(b0x0f));
}
}
請把一小段PHP代碼換成一段的JAVA代碼~非常感謝
你這不好單獨翻 調用到太多其它方法了 , 打注釋的地方根據php函數的功能 改成java的就行了
private static boolean check_password_db(String nickname,String password){
String pwd=mysql_query(“select password from users where username=”+nickname+””); //mysql_query
String sha_info;
if(mysql_num_rows(pwd)==1){ //mysql_num_rows(pwd) php的函數
String password_info=mysql_fetch_array(pwd); //mysql_fetch_array(pwd);
sha_info=explode(“$”,password_info[0]); //explode(“$”,password_info[0]);
}else{
return false;
}
if(sha_info[1]==”SHA”){
String salf=sha_info[2];
String sha256_password=hash(“sha256”,password); //hash();
sha256_password+=sha_info[2];
if(strcasecmp(trim(sha_info[3]),hash(“sha256”,sha256_password))==0){ //strcasecmp
return true;
}else{
return false;
}
}
}
php示例怎麼轉java?
/**
* 生成簽名
* @param string timestamp 時間戳
* @param string appSecret 合作商開發者密鑰
* @param string nonce 隨機字元串
* @return string
*/
public String makeSignature (String timestamp,String appSecret,String nonce) {
String[] tmpArr = {timestamp, nonce, appSecret};
// 按值升序排序
Arrays.sort(tmpArr)
// 數組拼接為字元串
// 調用md5方法
return signature;
}
其他的都是方法調用, 根據需要編寫就行
PHP代碼變成java代碼
php代碼沒幾行,信息量很大,翻譯成java代碼行數量比較大。僅提供思路和php代碼解釋。
—————
?php
$appid = “123”; //數組裡面的值,id。
$apikey = “456”; //數組裡面的值,為加密密鑰。
$secretKey =”789″; //數組裡面的值,安全密鑰。
$timestamp = time(); ////數組裡面的值,獲得當前時間。
//UNIX 時間戳(timestamp)是 PHP 中關於時間日期一個很重要的概念,它表示從 1970年1月1日 00:00:00 到當前時間的秒數之和。
//echo輸出$timestamp變數值,例如輸出了1389379960
echo $timestamp;
//定義數組。以鍵值對方式存儲。
//’appid’ ‘apikey’ ‘secretkey’ ‘timestamp’是key,鍵。
//$appid $apikey, $secretKey $timestamp是value,值。
$params = array(‘appid’=$appid, ‘apikey’=$apikey, ‘secretkey’=$secretKey, ‘timestamp’=$timestamp);
//對數組鍵值進行升序排序。排序結果為apikey appid secretkey timestamp
ksort($params);
//拼接數組中的參數,並且用encoded編碼。
//http_build_query — 生成 url-encoded 之後的請求字元串。當數組沒有寫下標時,就會用第二個參數結合當前默認下標當前綴。
//$param_uri變數值,結果為apikey=456appid=123secretkey=789×tamp=1389379498
$param_uri = http_build_query($params,”,”);
echo $param_uri; //echo輸出結果為apikey=456appid=123secretkey=789×tamp=1389379498
//先使用調用hash_hmac方法加密,HMAC-SHA1演算法。
//$secretKey為安全密鑰,$param_uri為要加密的明文。’sha1’是HMAC-SHA1演算法。
//再調用base64_encode方法加密,base64_encode 使用 MIME base64 對數據進行編碼。
$sig = base64_encode(hash_hmac(‘sha1’, $param_uri, $secretKey));
?
java:
1、用hashmap存儲元素,鍵值對方式。
MapString, String hashMap = new HashMapString, String(){
{
put(“appid”, “123”);
put(“apikey”, “456”);
put(“secretKey”, “789”);
put(“timestamp”, “當前UNIX 時間戳,秒數,java中獲取”);
}
};
2、java中可以通過Timestamp獲得UNIX 時間戳。
3、然後對hashmap進行升序排序。
4、然後寫一個方法遍歷hashmap,拼接成字元串格式為apikey=456appid=123secretkey=789timestamp=1389379498
然後對該字元串進行encoded編碼,輸出格式為apikey=456appid=123secretkey=789×tamp=1389379498
5、通過java中HMAC-SHA1演算法加密該字元串,$secretKey為安全密鑰。
6、再通過base64_encode加密第5步產生的字元串。這是最終sig結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192141.html