随着信息化的高速发展,人们对信息安全的需求接踵而至,人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患。 所以对文档安全的保护至关重要。【 百度 百科】
电子文档即计算机生成的二进制数据。依赖计算机系统存取并可在通信网络上传输。它主要包括电子文书、电子信件、电子报表、电子图纸等。今天为大家介绍PHP/Python两种编程语言 二进制 电子文档的加解密。文件级的文档密钥提升文档落地存储的安全。两种编程语言文档加解密互通性。
一、PHP二进制文档加密
<?php
function openssl _document_encrypt($strContent, $strPassword) {
return openssl_encrypt($strContent, 'DES-ECB', $strPassword, OPENSSL_RAW_DATA);
}
//pdf文档测试加密
$strContent = file_get_contents('./demo.pdf');
var_dump(strlen($strContent));
$strPassword = '12345678';
$strEnContent = openssl_document_encrypt($strContent, $strPassword);
var_dump(strlen($strEnContent));
执行结果:
int(11320079)
int(11320080)
二、PHP二进制文件解密
<?php
function openssl_document_decrypt($strEnContent, $strPassword) {
return openssl_decrypt($strEnContent, 'DES-ECB', $strPassword, OPENSSL_RAW_DATA);
}
//pdf文档测试解密
$strPassword = '12345678';
$strEnContent = '加密字串';
$strDeContent = openssl_document_decrypt($strEnContent, $strPassword);
var_dump(strlen($strDeContent));
执行结果:
int(11320079)
三、Python二进制文件加密
from Crypto.Cipher import DES
import sys
fp = open('./demo.pdf', 'rb')
text = fp.read()
fp.close()
key = b'12345678'
def pad(text):
while len(text) % 8 != 0:
text += b' '
return text
des = DES.new(key, DES.MODE_ECB)
padded_text = pad(text)
encrypted_text = des.encrypt(padded_text)
print(len(encrypted_text))
执行结果:
11320080
四、Python二进制文件解密
from Crypto.Cipher import DES
import sys
key = b'12345678'
encrypted_text = '加密字串'
des = DES.new(key, DES.MODE_ECB)
plain_text = des.decrypt(encrypted_text)
print(len(plain_text))
obj_file = open('c.pdf', 'wb+')
obj_file.write(plain_text[0:11320079])
执行结果:
11320080
五、PHP加密Python解密文件
from Crypto.Cipher import DES
import sys
fp = open('./e.pdf', 'rb')
text = fp.read()
fp.close()
key = b'12345678'
encrypted_text = text
des = DES.new(key, DES.MODE_ECB) # 创建一个DES实例
plain_text = des.decrypt(encrypted_text) # 解密
print(len(plain_text))
obj_file = open('c.pdf', 'wb+')
obj_file.write(plain_text)
执行结果:
11320080
六、总结
- 使用openssl函数可以解决PHP和Python语言文档加解密的互通。
- 文档加解密密钥是文件级别的业务上可以规划一个文件一个密钥。
- 加解密方式可以适用于所有二进制文档。例办公文档、pdf、图片、视频、音频等。
- 超大文件可以利用文件的分段上传下载方式分段加解密。文件大小对文档的加解密不再影响性能。
- 文件密钥可以统一加密落地管理。
- 加密后的文档大小与原始文档大小相差8的整型差值。加密后的文件与原始文件存储相差不大。