3
code.google.com/p/crypto-js
4
(c) 2009-2012 by Jeff Mott. All rights reserved.
5
code.google.com/p/crypto-js/wiki/License
11
var WordArray = C_lib.WordArray;
15
* Base64 encoding strategy.
17
var Base64 = C_enc.Base64 = {
19
* Converts a word array to a Base64 string.
21
* @param {WordArray} wordArray The word array.
23
* @return {string} The Base64 string.
29
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
31
stringify: function (wordArray) {
33
var words = wordArray.words;
34
var sigBytes = wordArray.sigBytes;
42
for (var i = 0; i < sigBytes; i += 3) {
43
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
44
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
45
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
47
var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
49
for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
50
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
55
var paddingChar = map.charAt(64);
57
while (base64Chars.length % 4) {
58
base64Chars.push(paddingChar);
62
return base64Chars.join('');
66
* Converts a Base64 string to a word array.
68
* @param {string} base64Str The Base64 string.
70
* @return {WordArray} The word array.
76
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
78
parse: function (base64Str) {
80
base64Str = base64Str.replace(/\s/g, '');
83
var base64StrLength = base64Str.length;
87
var paddingChar = map.charAt(64);
89
var paddingIndex = base64Str.indexOf(paddingChar);
90
if (paddingIndex != -1) {
91
base64StrLength = paddingIndex;
98
for (var i = 0; i < base64StrLength; i++) {
100
var bitsHigh = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);
101
var bitsLow = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);
102
words[nBytes >>> 2] |= (bitsHigh | bitsLow) << (24 - (nBytes % 4) * 8);
107
return WordArray.create(words, nBytes);
110
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='