分享一个本人的私密文件加密方法:用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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4

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

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

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

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

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

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

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

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

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