ini adalah fungsi pkcs7 di c# dan php. fungsi ini sudah saya coba dan hasilnya cukup bagus, berikut adalah scriptnya:
c#:
private string addPKCS7pad(string str) {
int strlen = str.Length;
int sisa = (strlen % 32);
if (sisa > 0)
{
char pad = ASCIIEncoding.ASCII.GetChars(new byte[] { (byte)sisa })[0];
return str.PadRight(sisa, pad);
}
else return str;
int sisa = (strlen % 32);
if (sisa > 0)
{
char pad = ASCIIEncoding.ASCII.GetChars(new byte[] { (byte)sisa })[0];
return str.PadRight(sisa, pad);
}
else return str;
}
private string removePKCS7pad(string str)
{
string lc = str.Substring(str.Length -1 , 1);
int numlc = ASCIIEncoding.ASCII.GetBytes(lc)[0];
if (numlc < 1 || numlc > 32) return str;
System.Text.RegularExpressions.Regex r =
new System.Text.RegularExpressions.Regex(
lc + "{" + numlc.ToString().Trim() + "}$");
if (r.IsMatch(str))
{
return str.Substring(0, str.Length - numlc);
}
else return "";
int numlc = ASCIIEncoding.ASCII.GetBytes(lc)[0];
if (numlc < 1 || numlc > 32) return str;
System.Text.RegularExpressions.Regex r =
new System.Text.RegularExpressions.Regex(
lc + "{" + numlc.ToString().Trim() + "}$");
if (r.IsMatch(str))
{
return str.Substring(0, str.Length - numlc);
}
else return "";
}
sedangkan ini adalah versi php-nya:
function addPKCS7Pad($string, $blockSize=32) {
$len = strlen($string);
$pad = $blockSize - ($len % $blockSize);
return $string . str_repeat(chr($pad), $pad);
}
function removePKCS7Pad($string) {
$lc = substr($string, -1);
$lci = ord($lc);
if (preg_match("/" . $lc . "{" . $lci . "}$/", $string)) {
$string = substr($string, 0, strlen($string) - $lci);
return $string;
} else return false;
}
$len = strlen($string);
$pad = $blockSize - ($len % $blockSize);
return $string . str_repeat(chr($pad), $pad);
}
function removePKCS7Pad($string) {
$lc = substr($string, -1);
$lci = ord($lc);
if (preg_match("/" . $lc . "{" . $lci . "}$/", $string)) {
$string = substr($string, 0, strlen($string) - $lci);
return $string;
} else return false;
}
selamat belajar ... :)
Tidak ada komentar:
Posting Komentar
Jika ada kritik dan saran, komentari Artikel ini.