一种简单的JS加密解密方法

一种简单的JS加密解密方法

本文分享一个简单的JS加密解密方法,适用于JS字符串内容加解密。

效果

首先展示一下加密解密效果,如下图所示:

JS字符串内容:“JShaman专注于JS代码混淆加密”。

加密形式为:“74,83,104,97,109,97,110,19987,27880,20110,74,83,20195,30721,28151,28102,21152,23494”。

加密解密原理

此方法使用非常方便,先定义两个字符串属性方法,分别用于加密解密。

加密时,将字符串中每个字符转化为字符对应的编码数值。

解密时,再将编码数值转化成字符。

之后,字符串变量便可直接调用这两个方法进行加密解密。

源码分享

//JS字符串加密

String.prototype.encode = function () {

var bytes = [];

for (var i = 0; i < this.length; i++) {

bytes.push(this.charCodeAt(i));

}

return bytes.join(\’,\’);

}

//JS字符串解密

String.prototype.decode = function () {

return String.fromCharCode.apply(null,this.trim().split(\”,\”));

}

//JS字符串加密解密示例

var str = \”JShaman专注于JS代码混淆加密\”;

console.log(\”原始字符串:\”,str);

var encode_str = str.encode();

console.log(\”加密后的字符串:\”,encode_str);

var decode_str = encode_str.decode();

console.log(\”解密后的字符串:\”,decode_str);

注:本例仅演示这种加密解密概念,如想增加强度,也可对数值进行一些运算或变化。或者可使用JShaman对JS加密算法的源码进行混淆加密,安全性会更上一层楼。

PHP 8.0正式发布:支持JIT编译器,性能提升高达3倍

美国时间11月26日,PHP团队宣布PHP 8.0正式GA。PHP 8.0是PHP语言的最新主要版本,带来了许多新特性和优化,包括命名参数(named arguments)、联合类型(union types)、属性(attributes)、构造器属性提升(constructor property promotion)、Match表达式、nullsafe运算符、JIT,以及针对类型系统、错误处理和一致性的诸多改进。

PHP 8.0.0 下载地址:

https://www.php.net/downloads

下文将对新版本的重要亮点做简单介绍:

https://wiki.php.net/rfc/named_params

PHP 7

PHP 8

  • 仅指定必需参数,跳过可选参数。
  • 参数与顺序无关,且是自描述的。

现在,开发者可以使用基于PHP原生语法的结构化元数据来代替PHPDoc注解。

https://wiki.php.net/rfc/attributes_v2

PHP 7

PHP 8

新版本定义和初始化属性所用的样板代码更少。

https://wiki.php.net/rfc/constructor_promotion

PHP 7

PHP 8

Union Types 支持接收多个不同类型的值,而不是单个类型。目前PHP已经支持两种特殊的联合类型:

  • Type或null,使用特殊?Type语法。
  • array或Traversable,使用特殊iterable类型。

对于类型组合,可以使用在运行时经过验证的原生联合类型声明来代替PHPDoc注解。

https://wiki.php.net/rfc/union_types_v2

支持联合类型之后,将会允许将更多类型信息从 phpdoc 迁移至函数签名。可以说,泛型之后,联合类型是目前类型声明系统中最大的突破口。

PHP 7

PHP 8

新的match很像switch,并具有以下特性:

  • Match是一个表达式,表示其结果可以存储在变量中或返回。
  • Match分支仅支持单行表达式,不需要break; 语句。
  • Match执行严格比较。

https://wiki.php.net/rfc/match_expression_v2

PHP 7

PHP 8

现在,开发者可以使用带有新的nullsafe运算符的调用链来代替null check。当对链中一个元素的求值失败时,整个链的执行将中止,并且整个链的求值为null。

https://wiki.php.net/rfc/nullsafe_operator

PHP 7

PHP 8

使用==和其他非严格比较运算符对字符串和数字之间做比较时,原本的做法是将字符串强制转换为数字,然后对整数或浮点数进行比较。这会导致许多令人惊讶的比较结果,其中最值得注意的是 0 == \”foobar\” 返回true。

在新版本中,仅在字符串实际为数字时才使用数字比较,否则将数字转换为字符串,并执行字符串比较。

https://wiki.php.net/rfc/string_to_number_comparison

PHP 7

PHP 8

在新版本中,如果参数验证失败,大多数内部函数将抛出Error异常。

https://wiki.php.net/rfc/consistent_type_errors

PHP 7

PHP 8

PHP 8引入了两个JIT编译引擎。Tracing JIT的表现最出色,它在综合基准测试中的性能提高到大约3倍,在某些特定的传统应用程序中提高到1.5–2倍。典型的应用程序性能与PHP 7.4相当。

JIT对PHP 8性能的贡献

  • 对算术/按位运算符进行更严格的类型检查(https://wiki.php.net/rfc/arithmetic_operator_type_checks)
  • 抽象特征方法验证(https://wiki.php.net/rfc/abstract_trait_method_validation)
  • 魔术方法的正确签名(https://wiki.php.net/rfc/magic-methods-signature)
  • 重分类引擎警告(https://wiki.php.net/rfc/engine_warnings)
  • 不兼容方法签名的致命错误(https://wiki.php.net/rfc/lsp_errors)
  • @运算符不再使致命错误静默。
  • 用私有方法继承(https://wiki.php.net/rfc/inheritance_private_methods)
  • 混合类型(https://wiki.php.net/rfc/mixed_type_v2)
  • 静态返回类型(https://wiki.php.net/rfc/static_return_type)
  • 内部函数类型(https://externals.io/message/106522)
  • 不透明的对象代替Curl、Gd、Sockets、OpenSSL、XMLWriter和XML扩展的资源
  • 在参数列表(https://wiki.php.net/rfc/trailing_comma_in_parameter_list)和使用闭包的列表(https://wiki.php.net/rfc/trailing_comma_in_closure_use_list)中允许结尾逗号
  • non-capturing捕获(https://wiki.php.net/rfc/non-capturing_catches)
  • 变量语法调整(https://wiki.php.net/rfc/variable_syntax_tweaks)
  • 将命名空间名称视为单个令牌(https://wiki.php.net/rfc/namespaced_names_as_token)
  • Throw现在是表达式(https://wiki.php.net/rfc/throw_expression)
  • 在对象上允许::class(https://wiki.php.net/rfc/class_name_literal_on_object)
  • Weak Map类(https://wiki.php.net/rfc/weak_maps)
  • Stringable接口(https://wiki.php.net/rfc/stringable)
  • str_contains()、str_starts_with()、str_ends_with()(https://wiki.php.net/rfc/str_contains)
  • fdiv()(https://github.com/php/php-src/pull/4769)
  • get_debug_type()(https://wiki.php.net/rfc/get_debug_type)
  • get_resource_id()(https://github.com/php/php-src/pull/54270
  • token_get_all()对象实现(https://wiki.php.net/rfc/token_as_object)

要下载PHP 8的源代码,请访问下载页面(https://www.php.net/downloads)。Windows二进制文件位于Windows版PHP网站(http://windows.php.net/download)。更改列表位于ChangeLog(http://www.php.net/ChangeLog-8.php)。

PHP手册中提供了迁移指南(https://www.php.net/manual/en/migration80.php)。请查阅它以获取新特性细节和向后不兼容更改的详细列表。

原文链接:https://www.php.net/releases/8.0/en.php

延伸阅读:

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

【php学习笔记】php中strtolower()方法使用笔记

在开发Web应用程序时,字符串是我们经常需要处理的一种数据类型。字符串的大小写问题在很多场景下都是非常重要的,比如密码的大小写敏感性、URL地址的大小写等等。PHP提供了许多处理字符串大小写的方法,其中最常用的方法之一就是strtolower()函数。

strtolower()函数是PHP中处理字符串的函数之一,其作用是将字符串中的所有字符转换成小写字母。这个函数非常简单,只需要传入一个字符串参数即可。

一、strtolower()函数的基本语法:

strtolower(string $str)

其中,$str参数是要转换的字符串,函数返回值是转换后的字符串。

二、strtolower()函数的示例:

可以看到,strtolower()函数将所有的大写字母转换成了小写字母,并返回了转换后的字符串。

三、注意事项

1、需要注意的是,strtolower()函数只能将ASCII字符集中的大写字母转换成小写字母,对于其他字符集中的字符可能会出现意想不到的结果。因此,在使用strtolower()函数时需要注意字符集的问题,以免出现不必要的错误。

2、另外,PHP中的字符串大小写敏感性也是需要注意的问题。在PHP中,字符串的大小写敏感性取决于具体的应用场景。比如,在MySQL数据库中,表名和列名是大小写敏感的,而变量名和函数名则是大小写不敏感的。因此,在编写PHP程序时,需要根据具体的应用场景来确定是否需要考虑字符串大小写敏感性的问题。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。