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