Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 9739ab3

Browse files
committed
Set IV when encrypting with CBC mode
1 parent 6066668 commit 9739ab3

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

core/src/core/src/pydio/Core/Utils/Crypto.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ public static function encrypt($data, $key, $base64encode = true){
136136
$r = new ZeroPaddingRijndael(Rijndael::MODE_CBC);
137137
$r->setKey($key);
138138
$r->setBlockLength(128);
139-
$encoded = $r->encrypt($data);
139+
$iv = self::getRandomSalt(false, 16);
140+
$r->setIV($iv);
141+
$encoded = $iv . $r->encrypt($data);
140142
if($base64encode) {
141143
return self::getDataHeader().base64_encode($encoded);
142144
} else {
@@ -156,7 +158,10 @@ public static function decrypt($data, $key, $base64encoded = true){
156158
$data = base64_decode($data);
157159
}
158160
if($test){
161+
$iv = substr($data, 0, 16);
162+
$data = substr($data, 16);
159163
$r = new ZeroPaddingRijndael(Rijndael::MODE_CBC);
164+
$r->setIV($iv);
160165
$r->setBlockLength(128);
161166
}else{
162167
// Legacy encoding

0 commit comments

Comments
 (0)