分享一个本人的私密文件加密方法:用php 对windows 上的自己的本地私密文件进行加密。

php 对windows 上的自己的本地私密文件进行加密。

由于经常要使用账号密码这些私密信息太多又难以记住, 所以放到了桌面方便些,但是放到桌面直接打开能看到,感觉非常不安全,因为里面包含服务器,mysql 登录等关键信息。而网上那些加密软件什么的,总感觉有后门,不安心,不放心,于是自己用php写了一个加密方法,分享出来给大家,代码如下。

加密代码 encrypt.php

<?php 

/**
 *  Description:  加密重要关键文件, 执行加密会覆盖原文件,一定要做好备份, 一定要记得密码,不记得密码文件将永久丢失
 *  Use:    php encript.php key  filename     (key 必传入, filename 不传默认为 secret )
 * 
 */
$key = isset($argv[1]) ? $argv[1] : '';
if(empty($key)) { 
  echo 'key can not be null';die;
}

$fileName = isset($argv[2]) ? $argv[2] : 'secret.txt';

$file = file_get_contents($fileName);
$file_encrypt = encrypt($file, $key);
file_put_contents($fileName, $file_encrypt);

function encrypt($data, $key)
{
    $key    =    md5($key);
    $x        =    0;
    $len    =    strlen($data);
    $l        =    strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= $key[$x];
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data[$i]) + (ord($char[$i])) % 256);
    }
    return base64_encode($str);
}

?>

解密代码 decript.php

<?php 
/**
 *  Description:  解密重要关键文件
 *  Use:    php encript.php key filename     (key 必传入, filename 不传默认为 secret )
 * 
 */
$key = isset($argv[1]) ? $argv[1] : '';
if(empty($key)) { 
  echo 'key can not be null';die;
}

$fileName = isset($argv[2]) ? $argv[2] : 'secret.txt';

$file = file_get_contents($fileName);
$file_decrypt = decrypt($file, $key);
file_put_contents($fileName, $file_decrypt);

function decrypt($data, $key)
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
        {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }
        else
        {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}

?>

描述

文件加密后会变成一串可逆的加密的字符串。

分享一个本人的私密文件加密方法:用php 对windows 上的自己的本地私密文件进行加密。

使用方法

加密: 加密时时使用以下命令进行加密,会对 filename.txt 进行加密

php encrypt.php yourPassword filename.txt

解密: 加密时时使用以下命令进行加密,会对 filename.txt 进行解密

php encrypt.php yourPassword filename.txt

查看完以后,再执行一次 php encrypt.php yourPassword filename.txt 重新加密即可

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

为啥不自己搭建密码管理工具呢 比如: Bitwarden

2年前 评论
vimkid (楼主) 2年前
vimkid (楼主) 2年前
arukas 2年前

密码学有一个说法,不要使用未公开的自创的加密方式

2年前 评论
vimkid (楼主) 2年前
vimkid (楼主) 2年前
vimkid (楼主) 2年前

这跟你压缩包设个密码有啥区别

2年前 评论
vimkid (楼主) 2年前
终生学习者

给你推荐一个专业 开源的 PGP 自己搜索一下

2年前 评论
vimkid (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!