lib/enc.rb in no-style-please2-plugins-0.4.3 vs lib/enc.rb in no-style-please2-plugins-0.5.0

- old
+ new

@@ -1,8 +1,7 @@ require 'openssl' require 'base64' -require 'salsa20' require 'digest' require 'ltec' require "jekyll" module Jekyll def test @@ -56,28 +55,41 @@ return "#{key}" end end module EncFilter + + def genKey(password) + salt = 'this is a salt string 20221019' + iter = 12345 + key_len = 32 + key = OpenSSL::KDF.pbkdf2_hmac(password, salt: salt, iterations: iter, + length: key_len, hash: "sha256") + return key + end + + def encrypt(msg,password) + cipher = OpenSSL::Cipher::AES.new(256, :GCM).encrypt + iv = cipher.random_iv + cipher.iv = iv + cipher.key = genKey password + encrypted = cipher.update(msg) + cipher.final + return 'E1.' + Base64.strict_encode64(iv + encrypted + cipher.auth_tag) + + end def get_encrypt_id(content,page) key = EncFilterTool.getKey(content,page) if key != nil && key.length > 0 return OpenSSL::HMAC.hexdigest("SHA256", "no-style-please2-key-digst-2022-05-21", key.to_s)[0..32] else return "" end end def encrypt_content(content,page,prefix) - keyOri = EncFilterTool.getKey(content,page) - keyOri = prefix + keyOri + prefix - key = Digest::MD5.hexdigest(keyOri).downcase() - iv = Digest::MD5.hexdigest(content).downcase() - ivHex = iv[0...16] - iv = ivHex.scan(/../).map { |x| x.hex.chr }.join - encryptor = Salsa20.new(key, iv) - encrypted_text = encryptor.encrypt(content) - return ivHex + ":" + Base64.strict_encode64(encrypted_text) + psw = EncFilterTool.getKey(content,page) + psw = prefix + psw + prefix + return encrypt content,psw end end \ No newline at end of file