Exploring the variance between Go and TypeScript when it comes to solving base64 encoding

Here is an example of encoding and decoding using base64 in different languages:

In TypeScript: Buffer.from('Мегафон').toString('base64') //0JzQtdCz0LDRhNC+0L0=

In Go:

decode, err := base64.URLEncoding.DecodeString("0JzQtdCz0LDRhNC+0L0=") //err : illegal base64 data at input byte 15

If we try to encode the same string in Go:

base64.URLEncoding.EncodeToString([]byte("Мегафон")) //0JzQtdCz0LDRhNC-0L0=

The only difference between the two encodings is the use of + and -.

I attempted a simple solution by replacing + with - using:

v = strings.ReplaceAll(v, "+", "-")
, but this is not ideal.

Answer №1

When comparing "standard" base64 encoding with URL-safe base64 encoding, it's important to note the differences. In Go, make sure to use base64.StdEncoding.DecodeString for normal base64 encoding instead of base64.URLEncoding.DecodeString.

Answer №2

You encrypted your data using standard base64 encoding and decrypted it using a URL-safe decoder. Make sure to refer to the base64.go file for more information.

// StdEncoding refers to the standard base64 encoding, as outlined in
// RFC 4648.
var StdEncoding = NewEncoding(encodeStd)

// URLEncoding is an alternative base64 encoding specified in RFC 4648.
// It is commonly used for URLs and file names.
var URLEncoding = NewEncoding(encodeURL)

This method will be effective.

base64.StdEncoding.DecodeString("0JzQtdCz0LDRhNC+0L0=")

If you prefer to encode your data for URLs safely, utilize base64url instead of base64. Then, you can decode the data with base64.URLEncoding.

 Buffer.from('Мегафон').toString('base64url'); //'0JzQtdCz0LDRhNC-0L0'

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Utilize React Styled Components to seamlessly unify the styles of two different components

I want to have consistent styles for both a styled input element and a styled select element. Currently, I accomplish this using string interpolation: const styles = ` background-color: white; width: 100%; border: 0 solid transparent; bor ...

Issue: React child components cannot be objects (received: object with keys)

Hey everyone, I could really use some help figuring out what I'm doing wrong. Here is the error message I'm receiving: Error: Objects are not valid as a React child (found: object with keys {id, title, bodyText, icon}). If you meant to render a ...

Getting a specific element of the "Event" object using javascript/typescript

Overview I successfully integrated a select box into my Vue.js/Nuxt.js application using Vuetify.js. I utilized the @change event to capture the selected value. <v-select v-model="selectedStartTime" :items="startTime" item ...

Having trouble with role inheritance on SharePoint list item in PnPJS?

In my SPFx webpart, I am utilizing PnPJS to set custom item level permissions on specific items within multiple lists. Below is the snippet of code I have written: let listIds: string[] = [ "LISTGUID1", "LISTGUID2" ]; for (const listId of listIds ...

The filter element is no longer supported by react-native-svg, causing SVGR to remove certain elements

I'm having trouble using my svg file in react native. I attempted to convert the svg to react native but received a warning: "/* SVGR has dropped some elements not supported by react-native-svg: filter */". The result is not exactly what I w ...

Issue with Typescript and React: Property not found on type 'IntrinsicAttributes'

While working on my app using Meteor, React, and Typescript, I encountered a transpiling error: The property 'gameId' is not recognized in the type 'IntrinsicAttributes & {} & { children?: ReactNode; } In my project, I have a com ...

Challenges encountered while compiling Node.js code with ts-node (Error: Cannot use import statement outside a module)

Trying to compile TypeScript code with NodeJS using this command: npx ts-node src/server.ts An error is thrown: SyntaxError: Cannot use import statement outside a module Following the error's instructions: Warning: To load an ES module, set " ...

Showing container element only if certain condition is met but display the children in Angular 2+

I am looking to create a grid-style view for a list of Angular components, where I can display up to 4 components in each row. The question that comes close to what I need is the following: Angular 2 NgIf, dont render container element on condition but sh ...

Encountering an error message stating "Type does not match FunctionComponent<Props>" and "Type is lacking the properties from type 'React Element<any, any>'"

As I work on integrating TypeScript into my code, I keep encountering an error that seems to be related to my Props type. The specific error message I'm facing is: Type '({ volume, onload, isMuted, src, mediaType, ...config }: PropsWithChildren&l ...

Offer identical service instances using various tokens

I am faced with a situation where I have 2 distinct interfaces: export interface IUserService { ... } export interface IUserStorageService { ... } In order to consolidate functionalities from both interfaces, I have created a single service that ...

What is the best way to implement an interface for accurately checking each prop type?

Currently, while working with Typescript, I am looking for a solution to define an interface with specific properties inside my object of marks. At the moment, I am using "any", but I know there must be a better approach. Any guidance or advice on how to p ...

Getting systemjs to load a module from a CDN in global format: The ultimate guide

I keep encountering the following error: EXCEPTION: ReferenceError: cast is not defined in [null] To create a custom Chromecast receiver application, you need to utilize a specific js file that exposes the necessary functionality through a global 'ca ...

Dynamic Angular Menu

Is there a cleaner, more dynamic way to implement a mat menu with individual click values and disable properties for each button? I want to avoid repeating code like in the example below. Looking for a more dynamic solution. #code <mat-menu #createDeal ...

What is the best way to create a case-insensitive sorting key in ag-grid?

While working with grids, I've noticed that the sorting is case-sensitive. Is there a way to change this behavior? Here's a snippet of my code: columnDefs = [ { headerName: 'Id', field: 'id', sort: 'asc', sortabl ...

Prevent duplicate API calls in React with TypeScript

Upon page load, it is important to extract the value from the URL and send it to the API. However, due to changes in the state of parent objects, the API call is triggered three times when it should ideally only be called once. import React, {useContext ...

Exploring the integration of Styled-components in NextJs13 for server-side rendering

ERROR MESSAGE: The server encountered an error. The specific error message is: TypeError: createContext only works in Client Components. To resolve this issue, add the "use client" directive at the top of the file. More information can be found here i ...

Remove the main project from the list of projects to be linted in

Currently in the process of transitioning my Angular application to NX and have successfully created some libraries. I am now looking to execute the nx affected command, such as nx affected:lint, but it is throwing an error: nx run Keira3:lint Oops! Somet ...

Attempting to locate a method to update information post-editing or deletion in angular

Are there any methods similar to notifyDataSetChange() in Android Studio, or functions with similar capabilities? ...

The combination of Node.js, Express router, and TypeScript is causing an issue where a string argument is not compatible with the request

I'm currently working on a tutorial to develop a comprehensive REST API. In the process, I've created a TypeScript class that exports a new Express router: import { Router, Request, Response, NextFunction } from 'express'; export clas ...

Switching between different types of generic functions in typescript

Is there a way to convert between these two types of generic functions: type Foo=<S>(a: S) => S type FooReturnType = ReturnType<Foo> // unknown type Bar<S> = { (a: S): S } type BarReturnType = ReturnType<Bar<string> ...