sign token is not equal with https://jwt.io/

Author: zailaibCreated Jun 30, 2023Updated Oct 24, 2025

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmqThNdOtauJpQ8jmaSfM gx4RCw/E1dX27/h25P3CSsVRVXITEiPKgyk7ZW/WNp97gc2wGch28FJTK+ULZk9D G4Y2xzUcy666FwDkii8JAQa56jSppt3G9OPfp5iaYnynVpHHWyvNqTi9hfwtShsW ObirZfjFVc25A+RwuBcOgHvNus6EEm13nldbL/dWqY+dWG0Us/jOoSZuAiaLAxwM eJcwHM1rJj+6eUc8Bj41+U1Hdizn+U67BrolVnCtaWpnzGHyYDJlMakyJfoDqYEB 1bgWLcYuShvv//k2gdN+KMRueOfVFhbUiCG1eZy14FIvgJQt/0K4zYmfLF5YjUr4 SQIDAQAB -----END PUBLIC KEY-----

-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCapOE1061q4mlD yOZpJ8yDHhELD8TV1fbv+Hbk/cJKxVFVchMSI8qDKTtlb9Y2n3uBzbAZyHbwUlMr 5QtmT0MbhjbHNRzLrroXAOSKLwkBBrnqNKmm3cb049+nmJpifKdWkcdbK82pOL2F /C1KGxY5uKtl+MVVzbkD5HC4Fw6Ae826zoQSbXeeV1sv91apj51YbRSz+M6hJm4C JosDHAx4lzAczWsmP7p5RzwGPjX5TUd2LOf5TrsGuiVWcK1pamfMYfJgMmUxqTIl +gOpgQHVuBYtxi5KG+//+TaB034oxG5459UWFtSIIbV5nLXgUi+AlC3/QrjNiZ8s XliNSvhJAgMBAAECggEADzmuQCbO9zvjHgS+tanw01RvnGGRMTXzjeEOMKGwwjyO 000rxkCOmM8DjWs/QYm+ZtNd1A4F8seCL4tJjek+G8zBIigPJZkWcnsYpSe4GNkl DwNgFCEX7Gauj5FBWvK3pXjtEiN8CD4BP9qqCValH6n4Ow4M/LOIVJMmS2OevoS6 s2CwQ6/2hCIt3rhcSrmU+vgop4RBRVr35LNQpEKsTsHivzwSEqS0YuYVmEQ3CA+n Gno6r0OepoHkhGgl1i4rjR2tesVjv/6RRP+KBa3Nv5brFnmjQmd0vfCVxAjxwCPY 3BxhzcD8rO2MO/uDIfakmk26RQn8uHwS0csXj7KRMQKBgQDNpMi8f/9mHlya5U1U BAFqYQpVV+S5fl9X+5LXJVx7GaxL0sS1KdBaOYs3IOlV+hOWbi3ULrSdagm2hcTA qGvUePmnJQhXqVxoHGdjm4Dfjf4EBWnzhfQZtRugSK4W/5Pzib9wicPULpodwrQT wZwZnOtIOY3pvXvZj22xW6k1sQKBgQDAgxMXCBzf6rVQcivr9X3JAupycS8xtmt8 V3TtACi8B4o1Mn+5gPRYuzmbS8VVL9hYuURyuEZaxDqYoYVV/A5K6DIUJ2VyKyJ6 2k/qUrwoeUjcPPj6N8GHSwk9yD3dyWeCh1uJolt3BZ9U9aaBPXGZLAyUMHPTQ7MK 0SlGiczaGQKBgDYYmxW7NhxO8F1u5KCtTRIG5Qj+ThTdwYcLjt053tIjNsfbchOW JFEXwh+GcNtFJdH0uemPP8QJGPUCy3dC1trV2Ba4DzHAQ6a/khMJ3STx3ViBdBWz rzr0AYhwlhtGsEzod4vLMdCnUbNyfJyV2dKDDQG64jISvnnE2T5GtoSBAoGAC+3T WAEDsQhdNd/tQtDSe4s3teG3l/AC1xCgSTNSUtxwvv0jFv6bpYfseOgIEVBGqrDI QgeTLHquWtjfZ0WYKSIcQE10ps9vcodmnlGEIUnqruMEVpTv5A9NQkvPMZgSVu9G R9AMtOJfTiduquGA0Yn+OYyLENNIG+p8EUfmrrkCgYEAtPmui7iRncnJTjPQwGxO lqWGpz3XJmLmucGoxEu4JJY7K5pH9sJxS/9dpTO8p+4pcDf5RiW2VllAnIn3ulbl QIMmNvn/tcRiQbpFhOFXSbCDoV9KfxBMaX0UZJDYYc/VC5J6z9pMV+vhwFsNeypd RQ8Ih8JV4T3Rae0dKlnhQtg= -----END PRIVATE KEY-----

const payload = { sub: 'user123', role: 'admin' }; const token = jwt.sign(payload, privateKey, { algorithm: 'RS256' });

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNjg4MTAxNzI4fQ.D3Pio6RmSnGsP3vhz50aJX8XPB5tRA4EdO8k2gTzpzh9gBms-8TJhTM0uez4THzUgT3PDjAYsQ0i-HGrRf74AcwMmm1Bc0zGwr3_MYNgx3fW7X12P-9ow9BzEF9bDH07cXulMqK2RDa-lvbD6ngGP926KKF9Jse9MIo3jGZ5377Ro0MpbB6bYktjDdo-y_U8oqsICdDO7YeVVshDwuxKboFGZAsbV1sYO1XU-15DfhkA0yF5i_lk6dhqsCco0KpIpmNQHAzWZCYSMZZ5DPd6kY9v7MCUDGfKcK_Gnx_KPo92_0k7IRMMNytZrhBsm0jasGIkE3XrLIsmo9588mvUbg

https://jwt.io/ token

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNjg4MTAxMzAwfQ.K7SToDIrmsAoXTny08R5HQPvkFTOZUVpudXzNuqk8L_JnBSVVlMys4cypK1CngUDiyZhrPwmqJEOcfOUlTEmWM1jorjgwz6KjleRcVzvEnSnzWOG2Gvh7LPm0taT8glSLtwXdSDYCMREwZgv2aVlberbZ8Br08SitxLp47askktIPlOz4IbvoixcUhrhCN2WpZGefcC5QaDQKjR2ca6ptjaAe3l-YRwCecqMSHqkeCHC2xQaoi2DXjS3ed5dDXF0sydql-Z9U9xv_2jO634jzEg4XFEVbKPmgvqZneCr6m5b44CQapxdv4RgIaHHtlunaqRCroKLV0zIx2UpK5Gd6Q

javascript
const crypto = require('crypto');
const jwt = require('jsonwebtoken');

const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
    modulusLength: 2048,
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'pem'
    },
    publicKeyEncoding: {
        type: 'spki',
        format: 'pem'
    },
});


const payload = { sub: 'user123', role: 'admin' };
const token = jwt.sign(payload, privateKey, { algorithm: 'RS256' });
console.log("token=", token);

jwt.verify(token, publicKey, function (err, user) {
    console.log("=====")
    console.log(err)
    console.log(user) // user info from the token
    console.log("=====")
});