javaphp加密
function encryptTokey($data){
$apikey = 'testapikey111';
$ps1 = sha1($apikey . strtolower($data));
$ps1 = strtoupper($ps1);
$s1 = implode(str_split($ps1, 2), '-');
$ps2 = md5($s1 . $apikey);
$ps2 = strtoupper($ps2);
$token = implode(str_split($ps2, 2), '-');
return $token;
}
echo encryptTokey('testdata');
運行結果:
68-10-98-74-4C-82-74-4B-CC-49-31-98-46-02-EE-8E
詳細你可以去後盾人看看,這些都是後盾人裡面的,哪裡有詳細的視頻教學都是高質量,我自己就是在裡面學的。
㈡ php的3des加密結果與java不一致
這個曾經研究過一點,如果你有php段完整的加密源代碼,那麼還是有可能做到結果一致的,否則很難,因為雖然都叫3des,但裡面卻有多種演算法,比如php加密時是否使用了向量等等
㈢ 電腦里Java php的代碼資料可以防泄密嗎
可以的。推薦的是使用綠盾加密,採用的是文件透明加密模塊,對平常辦公使用是沒有影響的。而且綠盾支持與SVN等源代碼管理工具無縫結合。
如果企業內部SVN伺服器採取透明模式,即加密文件是可以存放在SVN伺服器上的,需要達到的效果是SVN伺服器上文件密文存儲。則配合天銳綠盾應用伺服器安全接入系統來實現只有安裝了加密客戶端的Windows、Linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。
如果企業內部採用eclipse、VS等開發工具,從這些開發工具將代碼直接上傳到SVN伺服器上時會自動解密。為了避免明文、密文混亂存放導致版本比對時出現錯誤等問題。因此,SVN伺服器上需統一存放明文文件。則通過伺服器白名單功能實現對終端電腦數據進行強制透明加密,對上傳到應用伺服器數據實現上傳自動解密、下載自動加密。再配合天銳綠盾應用伺服器安全接入系統實現只有安裝了加密客戶端的Windows、Linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。
賽虎信息科技始終傾力為企事業單位的信息安全、綠盾數據防泄密提供一體化顧問式解決方案,為客戶提供優質的內網安全管理產品和適合多種行業的應用解決方案。
㈣ 急! php寫的加密函數如何用java解密
php,jsp,delphi多語言兼容的簡單的加密解密演算法,jsp目前暫時沒有實現中文的加密解密兼容。希望哪路高手能幫忙補上。
1,php的需要對以上代碼稍加修改,內容如下:
<?php
$key = "admin";
function keyED($txt,$encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}
function encrypt($txt,$key){
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
if ($ctr==strlen($encrypt_key)) $ctr=0;
$bbb=substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$tmp.= $bbb;
$ctr++;
}
return base64_encode(keyED($tmp,$key));
}
function decrypt($txt,$key){
$txt=base64_decode($txt);
$txt = keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
$string = "hello world!";
// encrypt $string, and store it in $enc_text
$enc_text = encrypt($string,$key);
// decrypt the encrypted text $enc_text, and store it in $dec_text
$dec_text = decrypt($enc_text,$key);
echo "原字元串: ".$string."<br/>";
echo "加密字元串: ".$enc_text."<br/>";
echo "解密字元串: ".$dec_text."<br/>";
?>
2,jsp代碼(java類)
package com.intwork.struct.common;
import java.util.Random;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class KeyED {
public char[] keyED(char[] cText,String encrype_key){
encrype_key=MD5.getInstance(encrype_key).encrypt();
int ctr=0;
char[] cEncrype_key=encrype_key.toCharArray();
char[] temp=new char[cText.length];
int ind=0;
String tmp="";
for(int i=0;i<cText.length;i++){
if(ctr==cEncrype_key.length){
ctr=0;
}
temp[ind++]=(char)(cText[i] ^ cEncrype_key[ctr]);
ctr++;
}
return temp;
}
public String encrype(String text,String key){
String encrype_key=MD5.getInstance(String.valueOf(new Random().nextInt(1000000))).encrypt();
int ctr=0;
char[] cText=text.toCharArray();
char[] cEncrype_key=encrype_key.toCharArray();
char[] temp=new char[cText.length*2];
int ind=0;
String tmp="";
for(int i=0;i<cText.length;i++){
if(ctr==cEncrype_key.length){
ctr=0;
}
temp[ind++]=cEncrype_key[ctr];
temp[ind++]=(char)(cText[i]^cEncrype_key[ctr]);
ctr++;
}
BASE64Encoder b = new sun.misc.BASE64Encoder();
return b.encode(new String(this.keyED(temp,key)).getBytes());
}
public String decrype(String text,String key)throws Exception{
BASE64Decoder decoder = new BASE64Decoder();
text=new String(decoder.decodeBuffer(text));
char[] cText=text.toCharArray();
char[] temp=new char[cText.length/2];
int ind=0;
cText=this.keyED(cText, key);
String tmp="";
for(int i=0;i<cText.length;i++){
char md5=cText[i];
i++;
temp[ind++]=(char)(cText[i]^md5);
}
return new String(temp);
}
}
3,delphi代碼(只有加密代碼,沒寫解密代碼。有興趣的可以給補上)
function Tfrmunmsgmain.EnPlugPwcrypt(str, skey: string): string;
//加密插件用的字元串
var
IdEncoder64: TIdEncoderMIME;
sencrypt_key, stemp, stemp1 : string;
ictr, i : Integer;
ifirst, ilast : Integer;
function enpwcrypt(str, skey: string): string;
//獲取加密後的字元串
var
stemp, sencrypt_key : string;
ictr, i : Integer;
ifirst, ilast : Integer;
begin
try
result := '';
try
sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Str(skey));
ictr := 1;
stemp := '';
for I := 1 to length(str) do
begin
if (ictr = length(sencrypt_key)) then
ictr := 1;
ifirst := Ord(midstr(str,i,1)[1]);
ilast := Ord(midstr(sencrypt_key,ictr,1)[1]);
stemp := stemp +
chr((ifirst) XOR (ilast));
inc(ictr);
end;
result := stemp;
except
end;
except
end;
//
end;
begin
try
result := '';
try
IdEncoder64 := TIdEncoderMIME.Create(Application);
sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Str(inttostr((Random(100000)))));
ictr := 1;
stemp := '';
stemp1 := '';
for I := 1 to length(str) do
begin
if (ictr = length(sencrypt_key)) then
ictr := 1;
ifirst := Ord(midstr(str,i,1)[1]);
ilast := Ord(midstr(sencrypt_key,ictr,1)[1]);
stemp1 := midstr(sencrypt_key,ictr,1) +
chr((ifirst) XOR (ilast));
stemp := stemp + stemp1;
inc(ictr);
end;
result := IdEncoder64.Encode(enpwcrypt(stemp, skey))
finally
freeandnil(IdEncoder64);
end;
except
end;
end;
㈤ java的32位MD5加密與php中的32位MD5加密結果不一樣。求幫助。急急急
Java的字元串是unicode編碼,不受源碼文件的編碼影響;而PHP的編碼是和源碼文件的編碼一致,受源碼編碼影響。例中java字元數據在散列時的編碼和php編碼未能保持一致,我認為這是導致輸出不同的「病理」
由於未知mad.toMd5的具體實現,問題直接成因應該在toMd5的String到byte[]轉換時的編碼上,或者未設置或者設置了錯誤的編碼
但只要java的字元串先getBytes獲得位元組串,並和php源碼編碼一致,就能獲得一致結果。
㈥ php AES加密對不上java的加密,請問如何實現
要注意特定的Padding實現跟演算法的blockSize有關,這里php的blocksize是在php的aes加密前先對源字元串進行Padding,問題得到解決。
㈦ php的base64加密,怎麼調整才能和java的base64的加密結果一致呢
phpbase64以後每76個字元加一個換行,
function javaBase64Encode($str)
{
$str = base64_encode($str);
$strLength = strlen($str);
$n = intval($strLength / 76);
if ($n <= 0) {
return $str;
}
for ($i = 1; $i <= $n; $i++) {
$position = 76 * $i + ($i - 1);
$str = substr_replace($str, PHP_EOL, $position, 0);
}
return $str;
}
function javaBase64Decode($str)
{
$strLength = strlen($str);
$n = intval($strLength / 76);
if ($n <= 0) {
return $str;
}
for ($i = $n; $i >= 1; $i--) {
$position = 76 * $i + ($i - 1);
$str = substr_replace($str, "", $position, 1);
}
return base64_decode($str);
}
或者使用chunk_split 函數也可以,默認就是76,而且不是所有的java代碼都需要這樣轉,要看java調用的是什麼類庫,有一些是不用的