Décodage base 64 en JavaScript

Cette fonction, qui s'appuie sur une expression régulière, permet de décoder des informations cryptées en base 64.

Le code JavaScript

                                            
                                                <script language="javascript">
                                                
                                                    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                            
                                                    function decode64(input) {
                                                        var output = new StringMaker();
                                                        var chr1, chr2, chr3;
                                                        var enc1, enc2, enc3, enc4;
                                                        var i = 0;
                                                    
                                                        // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
                                                        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
                                                    
                                                        while (i < input.length) {
                                                            enc1 = keyStr.indexOf(input.charAt(i++));
                                                            enc2 = keyStr.indexOf(input.charAt(i++));
                                                            enc3 = keyStr.indexOf(input.charAt(i++));
                                                            enc4 = keyStr.indexOf(input.charAt(i++));
                                                    
                                                            chr1 = (enc1 << 2) | (enc2 >> 4);
                                                            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                                                            chr3 = ((enc3 & 3) << 6) | enc4;
                                                    
                                                            output.append(String.fromCharCode(chr1));
                                                    
                                                            if (enc3 != 64) {
                                                                output.append(String.fromCharCode(chr2));
                                                            }
                                                            if (enc4 != 64) {
                                                                output.append(String.fromCharCode(chr3));
                                                            }
                                                        }
                                                    
                                                        return output.toString();
                                                    }
                                                    
                                                </script>