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加密字符串 的相关文章

  • 获取 Google 地图 API 密钥

    我使用的是 Windows 7 我已尝试使用以下命令多次使用出现在 c users YOURUSER android 中的 debug keystore keytool list alias androiddebugkey keystore
  • 我可以在摘要式身份验证中使用已 MD5 编码的密码吗

    我在数据库中有密码的 MD5 哈希值 我想将其用于 HTTP AUTH DIGEST 但在阅读文档时 摘要哈希看起来包含用户名 领域和明文密码的哈希 在这种情况下有什么办法可以使用密码的 MD5 哈希吗 不 如果他们需要的哈希是这样生成的
  • 计算文件的 MD5 校验和

    我在用着iTextSharp https en wikipedia org wiki IText从 PDF 文件中读取文本 但是 有时我无法提取文本 因为 PDF 文件仅包含图像 我每天都会下载相同的PDF文件 我想看看PDF是否被修改过
  • jquery中如何将密码转换成md5? [复制]

    这个问题在这里已经有答案了 实际上我正在创建更改密码页面 这是我检查旧密码是否与现有密码匹配的功能 该密码存储在数据库中的 MD5 中 因此我想首先将该密码转换为 MD5 然后我可以检查该密码 这是代码 function fnIsValid
  • 如何比较两段文字?

    我需要删除包含多个段落的文本中的重复段落 我使用类中的函数java security MessageDigest计算每个段落的MD5哈希值 然后将这些哈希值添加到Set If add ed 成功 这意味着最新的段落是重复的 这种方式有风险吗
  • 如何将md5字​​符串转换为普通文本? [复制]

    这个问题在这里已经有答案了 我已将用户密码以 MD5 形式保存在数据库中 现在我想以明文形式向用户发送密码 有什么方法可以将 MD5 字符串转换为明文吗 MD5 是一个hashing http en wikipedia org wiki C
  • react-native下载图片到本地相册

    需求 点击右上角下载icon 可以将当前图片下载并保存到本地相册 下载的图片 流程 下载图片的本质其实是 固定需要下载的页面内容和样式 将其放在当前页面不可见区域 点击下载按钮 穿一个ref给native 会自动拉起手机系统下载到本地相册
  • 如何让 MD5 更安全?或者说真的有必要吗?

    我将用户名和密码存储在 MySQL 数据库中 并使用 MD5 对它们进行哈希处理 然而 我只使用标准的 PHP 函数 没有任何修改 现在 我读到 MD5 已损坏 你做得怎么样 您是否通过不同的哈希机制运行多次或添加某种形式的盐 我很惊讶人们
  • Python 2 与 3。相同的输入,不同的结果。 MD5 哈希值

    Python 3 代码 def md5hex data return hex string of md5 of the given string h MD5 new h update data encode utf 8 return b2a
  • 用C++计算字符串的MD5

    我有一个很好的内存映射文件示例 用于计算文件的 MD5 哈希值 效果很好 没有任何问题 我想改变它来计算字符串的 MD5 哈希值 所以例子是 包括 include
  • 自定义身份验证和哈希 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绝对适合这个任务 所以
  • 在 C 中返回错误的 MD5 哈希值

    我正在尝试为字符串生成 MD5 哈希值 你好世界 使用原始 未修改的 md5 h 和md5c c http www arp harvard edu eng das manuals QNX6libs md5c 8c source html f
  • Tomcat Digest 与 Manager WebApp

    我正在尝试为 tomcat 管理器应用程序设置摘要密码 我有
  • 截断 MD5 的 ECDF 图

    在这个link https stackoverflow com questions 8184941 uniform distribution of truncated md5 它表示截断的 MD5 是均匀分布的 我想使用 PySpark 检
  • Memcache密钥生成策略

    给定函数f1它接收 n 个字符串参数 就运行时性能而言 什么被认为更好 memcache 的随机密钥生成策略 我们的 Memcache 客户端对其获取的密钥进行内部 md5sum 哈希处理 public class MemcacheClie
  • MD5 输入/输出的最大长度

    可以进行 md5 哈希处理的字符串的最大长度是多少 或者 如果没有限制 如果有 md5 输出值的最大长度是多少 MD5 将任意长度的消息处理为 128 位的固定长度输出 通常表示为 32 个十六进制数字的序列
  • 如何在Python中检测两个文件是否相同[重复]

    这个问题在这里已经有答案了 在这种情况下 对 md5sum file1 和 md5sum file2 进行系统调用并比较两个返回值是否足够 如果您想做的不仅仅是检测它们是否不同 或者不信任哈希解决方案 标准库中有一些名为difflib ht
  • 最好的“忘记密码”方法是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 忘记密码 实现忘记密码功能的最佳方法是什么 https stackoverflow com questions 522967 forgot password what is the best meth
  • “[B”是什么样的 Java 类型?

    我正在尝试通过 Java 代码 Hibernate 从 MySQL DB 获取 MD5 加密密码 但我既得不到 Strong 也得不到任何合理的 Java 类型 我唯一收到的是这条无用的消息 java lang ClassCastExcep

随机推荐

  • 不作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 我爱北京天安门