more work on the encryption library
This commit is contained in:
parent
8ff736b571
commit
613ab41eb3
|
@ -3,7 +3,6 @@
|
||||||
* ownCloud
|
* ownCloud
|
||||||
*
|
*
|
||||||
* @author Frank Karlitschek
|
* @author Frank Karlitschek
|
||||||
* @author Jakob Sack
|
|
||||||
* @copyright 2010 Frank Karlitschek karlitschek@kde.org
|
* @copyright 2010 Frank Karlitschek karlitschek@kde.org
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
|
@ -21,6 +20,15 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Todo:
|
||||||
|
// Crypt/decrypt button in the userinterface
|
||||||
|
// transparent decrypt/encrpt in filesystem.php
|
||||||
|
// don't use a password directly as encryption key. but a key which is stored on the server and encrypted with the user password. -> password change faster
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
require_once('Crypt_Blowfish/Blowfish.php');
|
require_once('Crypt_Blowfish/Blowfish.php');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +36,19 @@ require_once('Crypt_Blowfish/Blowfish.php');
|
||||||
*/
|
*/
|
||||||
class OC_Crypt {
|
class OC_Crypt {
|
||||||
|
|
||||||
|
static $encription_extension='.encrypted';
|
||||||
|
|
||||||
|
public static function createkey( $passcode) {
|
||||||
|
// generate a random key
|
||||||
|
$key=mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999);
|
||||||
|
|
||||||
|
// encrypt the key with the passcode of the user
|
||||||
|
$enckey=OC_Crypt::encrypt($key,$passcode);
|
||||||
|
|
||||||
|
// Write the file
|
||||||
|
file_put_contents( "$SERVERROOT/config/encryption.key", $enckey );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief encrypts an content
|
* @brief encrypts an content
|
||||||
* @param $content the cleartext message you want to encrypt
|
* @param $content the cleartext message you want to encrypt
|
||||||
|
@ -51,11 +72,56 @@ class OC_Crypt {
|
||||||
* This function decrypts an content
|
* This function decrypts an content
|
||||||
*/
|
*/
|
||||||
public static function decrypt( $content, $key) {
|
public static function decrypt( $content, $key) {
|
||||||
$bf = new Crypt_Blowfish($key);
|
$bf = new Crypt_Blowfish($key);
|
||||||
return($bf->encrypt($contents));
|
return($bf->encrypt($contents));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief encryption of a file
|
||||||
|
* @param $filename
|
||||||
|
* @param $key the encryption key
|
||||||
|
*
|
||||||
|
* This function encrypts a file
|
||||||
|
*/
|
||||||
|
public static function encryptfile( $filename, $key) {
|
||||||
|
$handleread = fopen($filename, "rb");
|
||||||
|
if($handleread<>FALSE) {
|
||||||
|
$handlewrite = fopen($filename.OC_Crypt::$encription_extension, "wb");
|
||||||
|
while (!feof($handleread)) {
|
||||||
|
$content = fread($handleread, 8192);
|
||||||
|
$enccontent=OC_CRYPT::encrypt( $content, $key);
|
||||||
|
fwrite($handlewrite, $enccontent);
|
||||||
|
}
|
||||||
|
fclose($handlewrite);
|
||||||
|
unlink($filename);
|
||||||
|
}
|
||||||
|
fclose($handleread);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief decryption of a file
|
||||||
|
* @param $filename
|
||||||
|
* @param $key the decryption key
|
||||||
|
*
|
||||||
|
* This function decrypts a file
|
||||||
|
*/
|
||||||
|
public static function decryptfile( $filename, $key) {
|
||||||
|
$handleread = fopen($filename.OC_Crypt::$encription_extension, "rb");
|
||||||
|
if($handleread<>FALSE) {
|
||||||
|
$handlewrite = fopen($filename, "wb");
|
||||||
|
while (!feof($handleread)) {
|
||||||
|
$content = fread($handleread, 8192);
|
||||||
|
$enccontent=OC_CRYPT::decrypt( $content, $key);
|
||||||
|
fwrite($handlewrite, $enccontent);
|
||||||
|
}
|
||||||
|
fclose($handlewrite);
|
||||||
|
unlink($filename.OC_Crypt::$encription_extension);
|
||||||
|
}
|
||||||
|
fclose($handleread);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue