The BASE64 encryption algorithm is one of the most common encoding methods for transmitting 8Bit bytes of code on the network, and you can view rfc2045~rfc2049, which has a detailed specification of MIME. BASE64 encoding can be used to pass longer identity information in an HTTP environment. For example, in the Java Persistence System hibernate, Base64 is used to encode a long unique identifier (typically 128-bit uuid) as a string that is used as a parameter in an HTTP form and an HTTP GET URL. In other applications, it is often necessary to encode binary data as appropriate in the form of URLs (including hidden form fields). At this time, the use of BASE64 encoding is not readable, that is, the encoded data will not be directly visible to the naked eye.
The following is a simple implementation of the BASE64 encryption and decryption algorithm (Chinese is not supported):
functionBase64encrypt (basestring) {varBase64chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/"; varLength =basestring.length; varLoopno = parseint (LENGTH/3); varCharone, Chartwo, Charthree; varout = ""; for(vari = 0, j = 0; J < Loopno; J + +) {Charone= Basestring.charcodeat (i++); Chartwo= Basestring.charcodeat (i++); Charthree= Basestring.charcodeat (i++); out+ = Base64chars.charat (Charone >> 2); out+ = Base64chars.charat (((Charone & 0x3) << 4) | ((Chartwo & 0xF0) >> 4)); out+ = Base64chars.charat (((Chartwo & 0xF) << 2) | ((Charthree & 0xC0) >> 6)); out+ = Base64chars.charat (Charthree & 0x3F); } if(i = = =length) { returnOut ; } Charone= Basestring.charcodeat (i++) & 0xFF; out+ = Base64chars.charat (Charone >> 2); if(i = = =length) { out+ = Base64chars.charat ((Charone & 0x3) << 4); out+= "=="; } Else{chartwo= Basestring.charcodeat (i++); out+ = Base64chars.charat (((Charone & 0x3) << 4) | ((Chartwo & 0xF0) >> 4)); out+ = Base64chars.charat ((Chartwo & 0xF) << 2); out+= "="; } returnOut ;}functionBase64Encode (basesting) {varBase64chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/"; varLength =basesting.length; varchara1, Chara2, CHARA3; varout = "", i = 0; while(I <length) {Chara1= Basesting.charcodeat (i++) & 0xFF; out+ = Base64chars.charat (chara1 >> 2); if(i = =length) { out+ = Base64chars.charat ((chara1 & 0x3) << 4); out+= "=="; Break; } chara2= Basesting.charcodeat (i++); if(i = =length) { out+ = Base64chars.charat (((Chara1 & 0x3) << 4) | ((Chara2 & 0xF0) >> 4)); out+ = Base64chars.charat ((Chara2 & 0xF) << 2); out+= "="; Break; } chara3= Basesting.charcodeat (i++); out+ = Base64chars.charat (((Chara1 & 0x3) << 4) | ((Chara2 & 0xF0) >> 4)); out+ = Base64chars.charat (((Chara2 & 0xF) << 2) | ((Chara3 & 0xC0) >> 6)); out+ = Base64chars.charat (Chara3 & 0x3F); } returnOut ;}functionBase64decode (basestring) {varBase64chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/"; varLength =basestring.length; varCharI, Charii, CHARIII, Chariv; varout = "", i = 0; if(0 < length && 0 = = length% 4) { if(/^[a-za-z0-9\+/]{2,}={0,2}$/.test (basestring)) { while(I < length-4) {CharI= Base64chars.indexof (Basestring.charat (i++)); Charii= Base64chars.indexof (Basestring.charat (i++)); CHARIII= Base64chars.indexof (Basestring.charat (i++)); Chariv= Base64chars.indexof (Basestring.charat (i++)); out+ = String.fromCharCode ((CharI << 2) | ((Charii & 0x30) >> 4)); out+ = String.fromCharCode (((Charii & 0xF) << 4) | ((CHARIII & 0x3C) >> 2)); out+ = String.fromCharCode (((CHARIII & 0x3) << 6) |Chariv); } CharI= Base64chars.indexof (Basestring.charat (i++)); Charii= Base64chars.indexof (Basestring.charat (i++)); out+ = String.fromCharCode ((CharI << 2) | ((Charii & 0x30) >> 4)); Switch(Basestring.indexof ("=")) { CaseLength-1: CHARIII= Base64chars.indexof (Basestring.charat (i++)); out+ = String.fromCharCode (((Charii & 0xF) << 4) | ((CHARIII & 0x3C) >> 2)); Break; Case-1: CHARIII= Base64chars.indexof (Basestring.charat (i++)); Chariv= Base64chars.indexof (Basestring.charat (i++)); out+ = String.fromCharCode (((Charii & 0xF) << 4) | ((CHARIII & 0x3C) >> 2)); out+ = String.fromCharCode (((CHARIII & 0x3) << 6) |Chariv); } } Else { Throw NewError (basestring + "does not base64 encoded string.")); } } Else { Throw NewError (basestring + "does not base64 encoded string.")); } returnOut ;}
JavaScript Base64 Plus decryption