New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cesar-cipher

Package Overview
Dependencies
Maintainers
0
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cesar-cipher - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

26

dist/index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.crypt = crypt;
const defaultAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
const defaultAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ÇÃÉÀÊÓÁÔÍ'.split('');
function isWhitespace(char) {
return char === ' ';
}
function isEncryptedWhitespace(char) {
return char === '+';
}
function appendToMessage(char, message) {

@@ -20,2 +23,9 @@ return message + char;

}
function findNewChar(char, chain, shift) {
const totalNumbers = chain.length;
const currentIndex = chain.indexOf(char);
const shiftedIndex = (currentIndex + shift) % totalNumbers;
const newChar = chain[shiftedIndex];
return newChar;
}
function shiftMessage(message, shift, alphabet) {

@@ -25,11 +35,11 @@ validateShift(shift, alphabet);

if (isWhitespace(char)) {
return appendToMessage(char, acc);
return appendToMessage('+', acc);
}
if (isEncryptedWhitespace(char)) {
return appendToMessage(' ', acc);
}
if (!isInAlphabet(char, alphabet)) {
return appendToMessage('?', acc);
}
const totalLetters = alphabet.length;
const currentIndex = alphabet.indexOf(char);
const shiftedIndex = (currentIndex + shift) % totalLetters;
const newChar = alphabet[shiftedIndex];
const newChar = findNewChar(char, alphabet, shift);
return appendToMessage(newChar, acc);

@@ -42,4 +52,4 @@ }, "");

return {
decrypt: (message) => shiftMessage(message, alphabet.length - shift, alphabet),
encrypt: (message) => shiftMessage(message, shift, alphabet),
decrypt: (message) => { var _a; return shiftMessage(((_a = message === null || message === void 0 ? void 0 : message.toString()) !== null && _a !== void 0 ? _a : '').toUpperCase(), alphabet.length - shift, alphabet); },
encrypt: (message) => { var _a; return shiftMessage(((_a = message === null || message === void 0 ? void 0 : message.toString()) !== null && _a !== void 0 ? _a : '').toUpperCase(), shift, alphabet); },
};

@@ -46,0 +56,0 @@ }

{
"name": "cesar-cipher",
"version": "0.0.1",
"version": "0.0.2",
"description": "A simple TypeScript library for Caesar cipher encryption and decryption",

@@ -10,3 +10,4 @@ "main": "dist/index.js",

"prepublishOnly": "npm run build",
"test": "echo \"No tests specified\" && exit 0"
"pretest": "npm run build",
"test": "node test.js"
},

@@ -13,0 +14,0 @@ "repository": {

# Criptografia de Substituição com Shift
> Apenas para fins didáticos. Não é aconselhável o uso dessa biblioteca em ambiente produtivo!
Este projeto implementa um simples sistema de criptografia e descriptografia de mensagens usando o conceito de **substituição por shift** (ou cifra de César). O código permite ao usuário criptografar e descriptografar mensagens, aplicando um deslocamento (`shift`) nas letras do alfabeto.
## Conceito
---
### Conceito
A **cifra de César** é uma técnica de criptografia que consiste em substituir cada letra de uma mensagem pela letra que se encontra um certo número de posições à frente (ou atrás) no alfabeto. O número de posições é chamado de **shift**.

@@ -15,54 +19,48 @@

- Shift: `3`
- Mensagem criptografada: `PHQVDJHP VHFUHWD`
- Mensagem criptografada: `PHQVDJHP+VHFUHWD`
### Exemplo de Descriptografia
- Mensagem criptografada: `PHQVDJHP VHFUHWD`
- Mensagem criptografada: `PHQVDJHP+VHFUHWD`
- Shift: `3`
- Mensagem descriptografada: `MENSAGEM SECRETA`
## Estrutura do Código
### Exemplo de Uso
O código está organizado em funções simples que implementam a lógica de criptografia e descriptografia.
Instalação
### 1. **`isWhitespace(char: string): boolean`**
Verifica se o caractere é um espaço em branco. Isso é usado para manter os espaços intactos na mensagem criptografada.
```sh
### 2. **`appendToMessage(char: string, message: string): string`**
Adiciona um caractere ao final de uma string de mensagem.
npm i cesar-cipher
### 3. **`isInAlphabet(char: string, alphabet: string[]): boolean`**
Verifica se o caractere faz parte do alfabeto fornecido. Isso é importante para garantir que apenas letras válidas sejam criptografadas.
# OR
### 4. **`validateShift(shift: number, alphabet: string[]): void`**
Valida o valor do `shift` para garantir que seja positivo e menor que o tamanho do alfabeto.
yarn add cesar-cipher
### 5. **`shiftMessage(message: string, shift: number, alphabet: string[]): string`**
Esta função é o coração do código. Ela processa a mensagem e aplica o deslocamento de acordo com o `shift` fornecido. Se o caractere for uma letra, ele será deslocado; se for um espaço em branco, ele será mantido; e se for um caractere inválido, será substituído por `?`.
```
A função usa o método `reduce` para construir a mensagem final letra por letra.
#### Usando a lib
### 6. **`crypt(alphabet: string[], shift: number)`**
Essa função retorna um objeto com dois métodos:
- **`encrypt(message: string): string`**: Criptografa a mensagem aplicando o `shift`.
- **`decrypt(message: string): string`**: Descriptografa a mensagem aplicando o shift inverso (calculado como `alphabet.length - shift`).
```typescript
### Exemplo de Uso
import { crypt } from 'cesar-cipher';
```typescript
// Criar um objeto de criptografia com um shift de 25
const cipher = crypt(25); // 1 a 25
const cipher = crypt(3); // 1 a 25
// Criptografar uma mensagem
const encryptedMessage = cipher.encrypt("MENSAGEM SECRETA");
console.log(encryptedMessage); // "LDMRZFDL RDBQDSZ"
const encryptedMessage = cipher.encrypt("OLA MUNDO");
console.log(encryptedMessage); // "ROD+PXQGR"
// Descriptografar a mensagem criptografada
const decryptedMessage = cipher.decrypt(encryptedMessage);
console.log(decryptedMessage); // "MENSAGEM SECRETA"
console.log(decryptedMessage); // "OLA MUNDO"
```
## Tratamento de Erros
### Tratamento de Erros

@@ -73,3 +71,3 @@ - O valor do `shift` deve ser um número positivo e menor que o tamanho do alfabeto. Caso contrário, o código lançará um erro.

## Como Funciona a Lógica do Shift
### Como Funciona a Lógica do Shift

@@ -79,14 +77,11 @@ Para aplicar o `shift`, o código utiliza a seguinte fórmula:

```typescript
const shiftedIndex = (currentIndex + shift) % totalLetters;
```
Aqui:
- `currentIndex` é o índice atual da letra no alfabeto.
- `shift` é o número de posições que a letra será deslocada.
- `totalLetters` é o tamanho do alfabeto (normalmente 26).
Essa fórmula garante que, ao atingir o final do alfabeto, o deslocamento "dê a volta", começando de novo do início do alfabeto.
## Conclusão
### Conclusão
Este sistema de criptografia é uma implementação simples e eficaz do método de cifra de César. Ele permite a manipulação de mensagens utilizando um deslocamento em um alfabeto customizável, aplicando boas práticas de programação em TypeScript, como validação de parâmetros e tratamento de erros.

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc