首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

base64 js加密解密

Base64 是一种常见的编码格式,用于将二进制数据转换为文本字符串,以便在基于文本的协议(如HTTP)中传输。Base64 编码并不是加密,而是一种编码方式,它允许将任意二进制数据表示为ASCII字符串。

基础概念

Base64 编码使用64个字符来表示二进制数据。这些字符包括大写字母(A-Z)、小写字母(a-z)、数字(0-9)以及符号(+和/)。有时为了使编码后的字符串长度是4的倍数,会在末尾添加一个或两个等号(=)作为填充。

优势

  1. 兼容性:Base64编码的数据可以在任何支持ASCII的环境中传输和处理。
  2. 可读性:编码后的数据是文本格式,便于阅读和调试。
  3. 简单性:编码和解码过程相对简单,易于实现。

类型

  • 标准Base64:使用ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/字符集。
  • URL安全的Base64:为了避免URL中的特殊字符问题,使用-_代替+/,并且通常省略末尾的=

应用场景

  • 电子邮件附件:MIME标准使用Base64编码来嵌入二进制文件到电子邮件中。
  • 数据传输:在HTTP请求和响应中传输二进制数据时使用。
  • 文件存储:在数据库中存储二进制数据时,可以先进行Base64编码。

JavaScript中的加密解密示例

在JavaScript中,可以使用内置的btoa()atob()函数进行Base64编码和解码。

编码示例

代码语言:txt
复制
let originalText = "Hello, World!";
let encodedText = btoa(originalText);
console.log(encodedText); // 输出: "SGVsbG8sIFdvcmxkIQ=="

解码示例

代码语言:txt
复制
let encodedText = "SGVsbG8sIFdvcmxkIQ==";
let decodedText = atob(encodedText);
console.log(decodedText); // 输出: "Hello, World!"

遇到的问题及解决方法

问题:特殊字符处理

当原始文本中包含Base64字符集中的字符(如+, /, =)时,直接编码可能会导致问题。

解决方法

  • 对于URL安全的需求,可以使用URL安全的Base64编码。
  • 在编码前对特殊字符进行转义,在解码后进行反转义。
代码语言:txt
复制
function urlSafeBase64Encode(str) {
    return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

function urlSafeBase64Decode(str) {
    str += Array(5 - str.length % 4).join('=');
    return atob(str.replace(/-/g, '+').replace(/_/g, '/'));
}

let originalText = "Hello, World!+/=";
let encodedText = urlSafeBase64Encode(originalText);
console.log(encodedText); // 输出: "SGVsbG8sIFdvcmxkISovLy8="

let decodedText = urlSafeBase64Decode(encodedText);
console.log(decodedText); // 输出: "Hello, World!+/="

通过这种方式,可以确保即使在包含特殊字符的情况下,Base64编码和解码也能正确进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS Base64 3Des加密解密(荐)

;第三个布尔值参数用来说明信息是加密还是解密;接下来的可选参数 mode 如果是 0 表示 ECB * 模式,1 表示 CBC 模式,默认是 ECB 模式;最后一个可选项是一个 8 字节的输入向量字符串...* * 参数: * key: 8字节字符串作为普通 DES 算法的密钥,或 24 字节字符串作为 3DES * message: 加密或解密的信息字符串 *...(key,hexToString(param),0,0))//解密1 (加密方式2) base64encode(des(key,message,1,1, hexToString(value), 1));...//加密2 des(key,base64decode(String(param)),0,1,hexToString(value),0)//解密2 以上方法介绍,     (加密2)首先是经过des加密...PS:如果要跟服务器对接,那么对des加密解密来说,格式根据协议来定的,只需要配置参数即可使用。

12.2K20
  • 原 (手工)base64加密解密

    加密算法     public static string Base64Encrypt(string saltStr,string sourceStr)         {             string...            targetStr = UnicodeEncoding.Unicode.GetString(byy);             return targetStr;         } 解密算法...IndexOutOfRangeException("超出范围"); }             return bit;         } 测试代码             Console.WriteLine("输入需base64...Console.WriteLine("输入加盐字符串");             saltStr = Console.ReadLine();             Console.WriteLine("输入需base64...");             saltStr = Console.ReadLine();             Console.WriteLine("输入需base64解密字符串,字符乱糟糟的不输了

    96860

    des加密+base64编码,base64解码+des解密

    des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des简单介绍...des对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法。...---- 注意:des加密和解密过程中,密钥长度都必须是8的倍数 base64简单介绍 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法...Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。...---- base64编码:把二进制数据转为字符; base64解码:把字符转为二进制数据; 运行效果图 TestActivity.java package top.gaojc; import

    3.4K40

    Java Base64加密与解密示例代码

    输出被映射到“A-Za-z0-9+/”字符集中,解密从该字符集中解析为任意字符,这篇文章主要介绍了Java Base64 加密与解密,需要的朋友可以参考下!...一、Java 8 基本 Base64 基本的加密尽量保持简单,加密输入字符串没有增加任何换行符。...URL加密和上述基本加密类似,它使用URL和文件名安全Base64字母表(没有‘+’和‘/’,增加‘-’和‘_’),不添加任何换行隔,代码如下: String originalUrl = "https...加密和解密的基本用法,使用java 8 新引入的API。...codewang.net 3、底部安全认证代码分享一下 4、冬天过节网站雪花飘落代码JS特效代码下载 雪花飘落代码添加教程 5种效果+效果展示 5、强制加QQ好友功能

    1.8K40

    Java Base64加密与解密示例代码

    输出被映射到“A-Za-z0-9+/”字符集中,解密从该字符集中解析为任意字符,这篇文章主要介绍了Java Base64 加密与解密,需要的朋友可以参考下!...一、Java 8 基本 Base64 基本的加密尽量保持简单,加密输入字符串没有增加任何换行符。...URL加密和上述基本加密类似,它使用URL和文件名安全Base64字母表(没有‘+’和‘/’,增加‘-’和‘_’),不添加任何换行隔,代码如下: String originalUrl = "https...Base64加密输出,输出被映射到“A-Za-z0-9+/”字符集中,编码输出必须以每行不超过76个字符的形式表示,并使用后面跟着的回车符’\r’和换行符’\n’为分隔符,代码如下: StringBuilder...加密和解密的基本用法,使用java 8 新引入的API。

    1.3K40

    php使用Base64加密解密URL地址教程

    要知道Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,看好是编码,并不是加密。...编码过程不解释了,Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长...基本可以判断是base64编码 base64不适合直接放在URL里作为参数传输,发现base64编码中有“/” “=”符号。...为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“_”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换。...通过下面的函数,完美解决base64编码url的问题了: //url base64编码 function url_b64encode($string) {     $data = base64_encode

    2.5K10

    JS前端加密 后端java解密

    经过排查发现是因为前端在登录的时候没有对密码等用户信息做加密处理 解决方案:   做一下最简单的处理,前端采用JS自带的 atob加密,后端采用工具解密 前端JS代码: //加密字符串,可以先将中文加密...(encStr); return encStr; }, //解密,可以先将ascii解密,然后再将非ascii解密 decrypt(str) {...; } return str; } /** * 解密字符串 * @return */ public static...通过输入密码为admin加密后得到 YW... 解密后得到admin 后端测试: ?...和前端一致,这样才能做到加密解密的效果 建议:   整体来说就是一次最简单的加密解密,当然这个相对不是特别安全,可以在这个基础之上,对等于号做一些处理,再通过一些其他的算法来多次加密也可以,最好是一些带随机盐的

    9.6K20
    领券