Skip to main content

Making vanilla web-fontend (project with lit, web component) secured (discussions with chatGpt)

Query: I wn complete seperate .css/.scss and .html template file for my webcomponent.js like in angular. But with complete security. In lit. Use any js lib like domPurify, etc. But I wan complete safety. How? ChatGPT said: Thought for 16s Totally doable. Here’s a secure Lit setup with fully separate .html + .scss files , sanitized with DOMPurify , and rendered into the Shadow DOM without sacrificing performance. Folder layout src / lib/ safe- html .js components/ app-shell .html app-shell .scss app-shell .js 1) Install deps npm i dompurify npm i -D sass Vite will compile .scss . We’ll import the compiled CSS as text and attach it via adoptedStyleSheets (fast + memory-friendly). 2) app-shell.html (pure template file) Put your Carbon UI Shell markup here (no scripts). Example stub: < cds-header aria-label = "My App" > < cds-header-name prefix = "IBM" >[Platform] </ cds-header-name > < cds-header-glo...

Java Encryption - Decryption Code

package myLib;


import java.io.UnsupportedEncodingException;

import java.security.GeneralSecurityException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

import javax.xml.bind.DatatypeConverter;

import org.apache.xml.security.exceptions.Base64DecodingException;


/**

 *

 * @author Mohit Kumar Gupta

 */

public class CryptoAES256 {


   public static void main(String[] args) {

        try {

            String passP = "Bar12345Barjhggfh12345"; // 128 bit key

            String encryptedString = encrypt(passP, "Hello Mohit");

            System.out.println("EncryptedString= " + encryptedString);

            String decryptedString = decrypt(passP, encryptedString);

            System.out.println("DecryptedString= " + decryptedString);

//        System.out.println(decrypt(key, initVector,

//                encrypt(key, initVector, "Hello World")));


            String passPhase = "Bar1234";

            String value = "Hello Mohit 1 2 3 4 5 6";

            String enc = encrypt(passPhase, value);

            String dec = decrypt(passPhase, enc);

            System.out.println(enc);

            System.out.println(dec);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }


    private static SecretKeySpec getKeySpec(String passphrase) throws NoSuchAlgorithmException, UnsupportedEncodingException {

        MessageDigest digest = MessageDigest.getInstance("SHA-256");

        return new SecretKeySpec(digest.digest(passphrase.getBytes("UTF-8")), "AES");

    }


    private static Cipher getCipher() throws NoSuchPaddingException, NoSuchAlgorithmException {

        return Cipher.getInstance("AES/CBC/PKCS5PADDING");

    }


    public static String encrypt(String passphrase, String value) throws GeneralSecurityException, UnsupportedEncodingException {

        byte[] initVector = new byte[16];

        SecureRandom.getInstanceStrong().nextBytes(initVector);

        Cipher cipher = getCipher();

        cipher.init(Cipher.ENCRYPT_MODE, getKeySpec(passphrase), new IvParameterSpec(initVector));

        byte[] encrypted = cipher.doFinal(value.getBytes());

        return DatatypeConverter.printBase64Binary(initVector)

                + DatatypeConverter.printBase64Binary(encrypted);

    }


    public static String decrypt(String passphrase, String encrypted) throws GeneralSecurityException, UnsupportedEncodingException, Base64DecodingException {

        byte[] initVector = DatatypeConverter.parseBase64Binary(encrypted.substring(0, 24));

        Cipher cipher = getCipher();

        cipher.init(Cipher.DECRYPT_MODE, getKeySpec(passphrase), new IvParameterSpec(initVector));

        byte[] original = cipher.doFinal(DatatypeConverter.parseBase64Binary(encrypted.substring(24)));

        return new String(original);

    }

}


Comments

Popular posts from this blog

Ubuntu Notes: Set up autossh as systemd useful-reminder commands

 sudo vim /etc/systemd/system/permanentAutossh.service ======================================== [Unit] Description=Keeps a tunnel to myOciFreeNat open After=network-online.target [Service] User=<username> Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 4322:127.0.0.1:5432 -i /<ssh_private_key_file_absolute_path> <username>@<ip_address> -p 22 [Install] WantedBy=multi-user.target ======================================== sudo systemctl daemon-reload sudo systemctl enable permanentAutossh sudo systemctl start permanentAutossh ================== sudo systemctl daemon-reload sudo systemctl restart permanentAutossh sudo systemctl status permanentAutossh ====================== sudo systemctl stop permanentAutossh sudo systemctl disable permanentAutossh sudo rm /etc/systemd/system/permanentAutossh.service

C/C++ Postgres libpq execute query with params chatGpt example

PGresult *PQexecParams(PGconn *conn, const char *command, int nParams, const Oid *paramTypes, const char * const *paramValues, const int *paramLengths, const int *paramFormats, int resultFormat); give example ChatGPT said: ChatGPT Here’s a basic example demonstrating how to use PQexecParams in C++ to execute a parameterized query in PostgreSQL. Example: Inserting Data Using PQexecParams Let's assume we are inserting a row into a table called users with the following columns: id (integer) name (text) age (integer) cpp Copy code # include <iostream> # include <libpq-fe.h> # include <memory> # include <string> void checkResult (PGresult* res, PGconn* conn) { if ( PQresultStatus (res) != PGRES_COMMAND_OK) { std::cerr << "Execution failed: " << PQerrorMe...

syslog cpp programming: learning using chatGcp

  Introduction to Syslog C++ August 27, 2024 This conversation may reflect the link creator’s personalized data, which isn’t shared and can meaningfully change how the model responds. You said: I am new to syslog in cpp programming n just starting. Can you teach me ChatGPT said: ChatGPT Sure! syslog is a standard for logging system messages in Unix-like operating systems. It provides a way to send log messages to the system log, which can then be collected and analyzed by various tools. Here's a basic guide to get you started with syslog in C++: 1. Include the Necessary Header To use syslog , you need to include the syslog.h header: cpp Copy code # include <syslog.h> 2. Open the Connection to syslog Before sending log messages, you need to open a connection to the syslog system. This is typically done at the start of your program: cpp Copy code openlog ( "your_program_name" , LOG_PID | LOG_CONS, LOG_USER); "your_program_name" : A string representing ...