js加密字符串

2023-11-04

/*
 * 字符串加密
 * 用javascript对字符串进行加密,应用于参数传递等。
 * 默认加密密钥为kb1234,使用者可自定义修改。
 * 注意加密密钥应和解密密钥相同。
 * 算法来自于互联网
 * 使用方法:
 * 加密
 * var code = kbt.encrypt('我爱北京天安门');
 * alert(code);
 * 解密
 * var str =  kbt.decrypt(code);
 * alert(str);
*/
var kbt = (function () {
    var that = {};
    
    function encrypt(str, pwd) {
        if(str == '') {
            return '';
        }
        str = encodeURIComponent(str);
        if(!pwd || pwd == '') {
            pwd = 'kb1234';
        }
        pwd = encodeURIComponent(pwd);   
        if(pwd == '' || pwd.length <= 0) {
            return '';
        }
        var prand = '';
        for(var i = 0, len = pwd.length; i < len; i += 1) {
            prand += pwd.charCodeAt(i).toString();
        }
        var sPos = Math.floor(prand.length / 5);
        var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) +
                   prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
        var incr = Math.ceil(pwd.length / 2);
        var modu = Math.pow(2, 31) - 1;
        if(mult < 2) {
            return '';
        }
        var salt = Math.round(Math.random() * 1000000000) % 100000000;
        prand += salt;   
        while(prand.length > 10) {
            prand = (parseInt(prand.substring(0, 10)) + 
                     parseInt(prand.substring(10, prand.length))).toString();
        } 
        prand = (mult * prand + incr) % modu;
        var encChr = '';
        var encStr = '';
        for(var i = 0, len = str.length; i < len; i += 1) {
            encChr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255));
            if(encChr < 16) {
                encStr += '0' + encChr.toString(16);
            }else{
                encStr += encChr.toString(16);
            }
            prand = (mult * prand + incr) % modu;
        }   
        salt = salt.toString(16);
        while(salt.length < 8) {
            salt = "0" + salt;
        }
        encStr += salt;
        return encStr;
    }

    function decrypt(str, pwd) {
        if(str == ''){
            return '';
        }
        if(!pwd || pwd == ''){
            pwd = 'kb1234';
        }
        pwd = encodeURIComponent(pwd);
        if(str == undefined || str.length < 8) {
            return '';
        }
        if(pwd == undefined || pwd.length <= 0) {
            return '';
        }
        var prand = '';
        for(var i = 0, len = pwd.length; i < len; i += 1) {
            prand += pwd.charCodeAt(i).toString();
        }
        var sPos = Math.floor(prand.length / 5);
        var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) +
                   prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
        var incr = Math.round(pwd.length / 2);
        var modu = Math.pow(2, 31) - 1;
        var salt = parseInt(str.substring(str.length - 8, str.length), 16);
        str = str.substring(0, str.length - 8);
        prand += salt;
        while(prand.length > 10) {
            prand = (parseInt(prand.substring(0, 10)) + 
                     parseInt(prand.substring(10, prand.length))).toString();   
        }
        prand = (mult * prand + incr) % modu;
        var encChr = '';
        var encStr = '';
        for(var i = 0, len = str.length; i < len; i += 2) {
            encChr = parseInt(parseInt(str.substring(i, i + 2), 16) ^ Math.floor((prand / modu) * 255));   
            encStr += String.fromCharCode(encChr);   
            prand = (mult * prand + incr) % modu;   
        }
        return decodeURIComponent(encStr);
    }

    that.encrypt = encrypt;
    that.decrypt = decrypt;
    return that;
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js加密字符串 的相关文章

  • MD5解码。他们是如何做到的?

    我认为 不可能解码 md5 哈希值 但我找到了可以解码它们的工具here http md5 web max ca 但我不知道他们是如何在这么短的时间内做到这一点的 大约需要一秒钟 请帮助我理解它 Thanks 它不会解码 MD5 哈希值 它
  • 在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES

    如果这不是很明显 我首先要说的是我不是加密货币人士 我的任务是在 Python 2 7 中复制 Java 的 PBEWithMD5AndDES 具有 DES 加密的 MD5 摘要 的行为 我确实可以访问 Python 的加密工具包 PyCr
  • 有趣的数学 为什么素数在密码学中很重要?

    这里我们将探讨为什么素数在密码学中很重要 我们将根据特定的密码系统 RSA 算法 来进行深入了解 一 素数的特殊性 每个数字都可以分解为它的素数 一般来说 找到一个数的因数是非常困难的 要找到一个自然数的所有素因数 必须尝试将其除以它的可能
  • react-native使用动画Animated

    官方网文档 动画 Animated 一些精彩的例子 React Native 动画 Animated 渐变组件的使用 ReactNative 进阶 四十五 渐变组件 react native linear gradient 需要实现如下的动
  • react-native下载图片到本地相册

    需求 点击右上角下载icon 可以将当前图片下载并保存到本地相册 下载的图片 流程 下载图片的本质其实是 固定需要下载的页面内容和样式 将其放在当前页面不可见区域 点击下载按钮 穿一个ref给native 会自动拉起手机系统下载到本地相册
  • 单向哈希函数如何工作? (已编辑)

    我阅读了有关 md5 哈希的维基百科文章 但我仍然无法理解哈希如何无法 重构 回原始文本 有人可以向对密码学知之甚少的人解释一下它是如何工作的吗 该函数的哪一部分使其成为单向的 由于到目前为止每个人都简单地定义了哈希函数是什么 所以我会咬牙
  • VBA计算文件内容的MD5哈希值

    我需要一个 VBA 例程来计算文件内容的 MD5 哈希值 我找到了一些例子 例如 here https stackoverflow com questions 2826302 how to get the md5 hex hash for
  • 自定义身份验证和哈希 Laravel 5.1

    我有一个现有的数据库 users username gt varchar password gt md5 hashing 我是 Laravel 新手 我尝试从 Laravel 创建简单的登录和注册docs http laravel com
  • 如何在R中创建列的md5哈希值?

    我有一个数据框 ID VID 1 xyz 0001 我想更换VIDmd5 哈希为VID列值 我该如何在 R 中做到这一点 我在看digest包但不知道如何将其放入 R 代码中 Thanks Package digest绝对适合这个任务 所以
  • PHP - MD5、SHA、哈希安全

    我是一个用 PHP 构建的新网站的开发人员 我想知道什么是最好的 用于散列的东西 我已经研究过 md5 和 sha1 但还有更安全的吗 如果这是一个菜鸟问题 我很抱歉 但我是 PHP 安全新手 我正在努力让我的 网站尽可能安全 还有什么是盐
  • BSD md5 与 GNU md5sum 输出格式?

    任何人都知道为什么 BSD md5 程序会产生这种格式的哈希输出 MD5 checksum md5 9eb7a54d24dbf6a2eb9f7ce7a1853cd0 而 GNU md5sum 会产生像这样更合理的格式 9eb7a54d24d
  • 可以从 Base64 字符串中删除等号吗?

    我有一个字符串 我将其编码为 Base64 以节省空间 如果我去掉最后的等号有什么大不了的吗 这会显着降低熵吗 我该如何确保结果字符串的长度是固定的 gt gt gt base64 b64encode combined digest alt
  • 生成 MD5 密钥并保存在文本文件中

    我正在使用 MD5 命令行实用程序 可以从此处获取http www fourmilab ch md5 http www fourmilab ch md5 我想要做的就是生成一个文件夹中所有文件的 MD5 密钥并将它们保存在一个文件中 但是
  • 使用 powershell 对整个目录进行 MD5 校验和哈希

    我正在尝试使用 powershell 为整个目录生成 MD5 校验和 在 Linux 上 有一个非常有效的 1 liner 如下所示 tar cf 某个目录 md5和 我了解到 tar 现在是 Windows 10 的一部分 并且可以在 P
  • C#计算打开文件的MD5?

    如何计算进程打开或使用的文件的 MD5 哈希值 文件可以是 txt 或 exe 我当前的代码返回 exe 错误 因为它正在运行 这是我当前的代码 public static string GetMd5HashFromFile string
  • 如何在 Google Storage Transfer 上创建 tsv 文件

    谷歌为其云服务提供了很棒的文档 但不幸的是没有人能理解其中的内容 他们的解释总是跳跃性的 让人们没有任何线索来完成哪怕是一个简单的任务 创建 tsv 文件应该是一个简单的任务 我尝试关注此页面中的所有内容创建 URL 列表 https cl
  • MD5 和 SHA1 的安全性如何

    嘿 只是一个简单的问题 因为我想更多地了解哈希函数 我知道它们如何工作以及它们做什么 但是它们的安全性如何 我希望得到一个简单的答案而不是链接 因为我从来没有发现它们有用 现在的技术 两者都可以cracked http www hackth
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • 我可以在 psycopg2 中使用 md5 身份验证吗?

    经过两个小时的阅读文档 源代码和帮助线程后 我放弃了 我无法让 psycopg2 使用 md5 字符串进行身份验证 根据this http bytes com topic python answers 42597 psycopg authe

随机推荐

  • 不作35岁的程序员

    http blog chinaunix net uid 28647963 id 3540115 html 在中国 程序员不能超过35岁 似乎已经是不争的事实 软件开发工作就是青春饭 顶多靠毕业这十年的时间 超过这个年龄 要不成功跃身成为管理
  • UE4对象类类型引用和类默认对象(Class Default Object,简称CDO)

    官方介绍https docs unrealengine com en us Programming UnrealArchitecture Objects The UCLASS macro gives the UObject a refere
  • python3中使用pip3错误syn_python-pip3错误-'_NamespacePath'对象没有属性'sort'

    python pip3错误 NamespacePath 对象没有属性 sort 我尝试通过pip3安装软件包 但出现此错误 我运行的每个pip pip3命令都会给我这个错误 alexg hitbox pip3 V Traceback mos
  • 2021全国计算机3月试题,2021年3月全国计算机等级考试二级MS Office高级应用历年真题与模拟试题答案分析_圣考资料网...

    部分 历年真题及详解 2016年3月全国计算机等级考试 二级MS Office高级应用 真题及详解 考试时间120分钟 满分100分 一 单选题 每小题1分 共20分 1 软件按功能可以分为应用软件 系统软件和支撑软件 工具软件 下面属于应
  • 周末用Python兼职赚了5000,分享一些接单技巧

    大家最近过得开心吗 元旦假日将至 Python副业圈子里的朋友们一定很开心 每年年末都是Python技术变现旺季 尤其是在目前这种大厂都缺人的特殊时期 私活订单多到接不完 很多人都在接单 近两年开辟副业兼职赚钱的人越来越多 我们似乎进入了一
  • vscode统计代码行数,前端开发配置、快捷键使用

    1 统计代码行数 使用场景是项目年终统计行数 实现 在需要统计得文件夹右键 在文件夹中查找 后输入筛选得正则表达式 b b 注意右边小图标都点亮 这里顺便将自己使用vscode进行前端开发环境配置归纳一下 便于自己以后快速搭建 vscode
  • 稳健回归(Robustness regression)

    稳健回归 Robustness regression 标签 空格分隔 监督学习 author duanxxnj 163 com time 2016 07 08 稳健回归Robustness regression 最小二乘法的弊端 稳健回归
  • PHP 垃圾回收机制(GC)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 GC回收机制是什么 二 引用技术的知识 三 GC垃圾回收机制的使用 四 CISCN 2022 初赛 ezpentest 五 NSSCTF prize p1 前
  • Java-基于SSM的人事管理系统

    项目背景 在高速发展的时代 众多的软件被开发出来 给用户带来了很大的选择余地 而且人们越来越追求更个性的需求 在这种时代背景下 人们对人事管理系统越来越重视 更好的实现人事管理系统的有效发挥 本文将通过人事管理系统的信息 分析在日常生活中对
  • linux搭建测试环境

    微信设置水滴昵称 个性中带点萌 Linux搭建测试环境安装软件详细步骤 一 安装jdk1 8 二 jdk与tomact对应版本 三 安装tomact 四 安装mysql mysql 5 7 24 linux glibc2 12 x86 64
  • 高考+考研,如何选择人工智能相关专业?

    世界杯如火如荼 高考报志愿 确定考研目标也在火热展开中 人工智能行业如此热门 那么目前都哪有 科班 专业可供选择呢 结合相关资料 整理出与AI紧密相关的国内高校与科研院所名单 希望能帮到小伙伴们 成为朝阳产业 人工智能是研究 开发用于模拟
  • 删除文件名含有特殊字符的文件

    删除文件名含有特殊字符的文件 当你要删除含有特殊字符的文件名时 有以下几种情况 使用转义字符 引号 rm rf rm rf rm rf 上述命令删除文件名为 的文件 如果直接删除 那么根目录中的所有文件都会丢失 这种方式能够适用于大多数情况
  • jenkins war包 centos启动安装指导

    文章目录 问题回顾 1 进入官网 下载到Jenkins的war包 1 1 放置在指定位置 1 2 放置安装包和创建文件放置路径 1 3 检查环境 1 4 配置启动命令和结束命令 2 启动后进入到Jenkins页面 2 1 安装插件 例如流水
  • (一)Springboot原理源码解析之Springboot框架组成

    目录 一 总体框架构成 1 注解组成关系 2 类继承和调用关系 二 框架总体调用流程 1 入口类中的流程 2 Spring刷新流程 一 总体框架构成 我在分析Springboot的组成部分把其分成了两部分 注解组成及关系 主要说明了在启动过
  • LeetCode.81 搜索旋转排序数组Java

    LeetCode 81 搜索旋转排序数组 注意 通过mid和左边数字大小可以判断到底是左边有序还是右边有序 需要处理重复数字最后才能通过 代码 class Solution public boolean search int nums in
  • 信奥赛一本通 C++题解 2034【例5.1】反序输出

    2034 例5 1 反序输出 时间限制 1000 ms 内存限制 65536 KB 提交数 23315 通过数 9932 题目描述 输入n 个数 要求程序按输入时的逆序把这n个数打印出来 已知整数不超过100个 也就是说 按输入相反顺序打印
  • Element-ui表单验证验证失败,input内有内容仍然验证为空的问题,验证数值类型不一致问题

    首先展示正确的格式 以验证是否为空为例 html代码块
  • QProcess 类使用总结

    背景 QProcess 类用于启动外部程序并与它们通信 QProcess 将进程视为I O 设备 可以对进程进行写入和读取 调用参数设置 同时指定路径和参数调用程序 QProcess process new QProcess this pr
  • 阿里云轻量级服务器安装--宝塔面板

    一 环境 1 服务器 阿里云轻量级服务器 2 环境 CentOS 7 6 二 安装 1 打开远程链接 2 输入安装命令 yum install y wget wget O install sh http download bt cn ins
  • js加密字符串

    字符串加密 用javascript对字符串进行加密 应用于参数传递等 默认加密密钥为kb1234 使用者可自定义修改 注意加密密钥应和解密密钥相同 算法来自于互联网 使用方法 加密 var code kbt encrypt 我爱北京天安门