This is an automated email from the ASF dual-hosted git repository. chengzhang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push: new 3b220d7e8bf Remove like and rc4 in ShardingSphere encrypt and move to ShardingSphere plugin repository (#28580) 3b220d7e8bf is described below commit 3b220d7e8bf8f31f24c16a7bfa176bbe45e43fa0 Author: Zhengqiang Duan <duanzhengqi...@apache.org> AuthorDate: Tue Sep 26 08:39:40 2023 +0800 Remove like and rc4 in ShardingSphere encrypt and move to ShardingSphere plugin repository (#28580) * Remove like and rc4 in ShardingSphere encrypt and move to ShardingSphere plugin repository * fix unit test --- docs/document/content/dev-manual/encrypt.cn.md | 2 - docs/document/content/dev-manual/encrypt.en.md | 2 - .../common-config/builtin-algorithm/encrypt.cn.md | 25 ----- .../common-config/builtin-algorithm/encrypt.en.md | 25 ----- .../algorithm/standard/RC4EncryptAlgorithm.java | 110 --------------------- ...che.shardingsphere.encrypt.spi.EncryptAlgorithm | 2 - .../like/CharDigestLikeEncryptAlgorithmTest.java | 71 ------------- .../standard/RC4EncryptAlgorithmTest.java | 79 --------------- .../core/src/test/resources/yaml/encrypt-rule.yaml | 5 - .../src/main/antlr4/imports/encrypt/BaseRule.g4 | 11 +-- .../src/main/antlr4/imports/encrypt/Keyword.g4 | 16 --- .../resources/conf/convert/config-encrypt.yaml | 2 +- .../test/resources/conf/import/config-encrypt.yaml | 6 +- .../test/resources/expected/convert-encrypt.yaml | 2 +- .../e2e/fixture/ITEncryptLikeAlgorithmFixture.java | 11 +-- ...che.shardingsphere.encrypt.spi.EncryptAlgorithm | 5 +- .../algorithm/like/common_chinese_character.dict | 0 .../rql/dataset/encrypt/show_encrypt_rule.xml | 4 +- .../rql/dataset/encrypt/show_encrypt_rules.xml | 8 +- .../encrypt/proxy/conf/mysql/config-encrypt.yaml | 2 +- .../proxy/conf/opengauss/config-encrypt.yaml | 2 +- .../proxy/conf/postgresql/config-encrypt.yaml | 2 +- .../test/resources/env/scenario/encrypt/rules.yaml | 2 +- 23 files changed, 18 insertions(+), 376 deletions(-) diff --git a/docs/document/content/dev-manual/encrypt.cn.md b/docs/document/content/dev-manual/encrypt.cn.md index 1fd403d0f80..9ffedbd2cfc 100644 --- a/docs/document/content/dev-manual/encrypt.cn.md +++ b/docs/document/content/dev-manual/encrypt.cn.md @@ -20,6 +20,4 @@ chapter = true | *配置标识* | *详细说明* | *全限定类名* | |------------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | AES | 基于 AES 的数据加密算法 | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.AESEncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/AESEncryptAlgorithm.java) | -| RC4 | 基于 RC4 的数据加密算法 | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.RC4EncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithm.java) | | MD5 | 基于 MD5 的辅助查询加密算法 | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.MD5EncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/assisted/MD5AssistedEncryptAlgorithm.java) | -| CHAR_DIGEST_LIKE | 用于模糊查询的数据加密算法 | [`org.apache.shardingsphere.encrypt.algorithm.like.CharDigestLikeEncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithm.java) | diff --git a/docs/document/content/dev-manual/encrypt.en.md b/docs/document/content/dev-manual/encrypt.en.md index a81d2acd3da..caeada00380 100644 --- a/docs/document/content/dev-manual/encrypt.en.md +++ b/docs/document/content/dev-manual/encrypt.en.md @@ -20,6 +20,4 @@ Data encrypt algorithm definition | *Configuration Type* | *Description* | *Fully-qualified class name* | |----------------------|---------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | AES | AES data encrypt algorithm | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.AESEncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/AESEncryptAlgorithm.java) | -| RC4 | RC4 data encrypt algorithm | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.RC4EncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithm.java) | | MD5 | MD5 assisted query encrypt algorithm | [`org.apache.shardingsphere.encrypt.algorithm.encrypt.MD5EncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/assisted/MD5AssistedEncryptAlgorithm.java) | -| CHAR_DIGEST_LIKE | Data encryption algorithms for like queries | [`org.apache.shardingsphere.encrypt.algorithm.like.CharDigestLikeEncryptAlgorithm`](https://github.com/apache/shardingsphere/blob/master/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithm.java) | diff --git a/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.cn.md b/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.cn.md index 62931407f69..68b5f19d7df 100644 --- a/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.cn.md +++ b/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.cn.md @@ -22,31 +22,6 @@ weight = 5 | aes-key-value | String | AES 使用的 KEY | | digest-algorithm-name | String | AES KEY 的摘要算法 (可选,默认值:SHA-1) | -#### RC4 加密算法 - -类型:RC4 - -可配置属性: - -| *名称* | *数据类型* | *说明* | -|---------------|--------|-------------| -| rc4-key-value | String | RC4 使用的 KEY | - -### 模糊加密算法 - -#### 单字符摘要模糊加密算法 - -类型:CHAR_DIGEST_LIKE - -可配置属性: - -| *名称* | *数据类型* | *说明* | -|-------|--------|--------------------| -| delta | int | 字符Unicode码偏移量(十进制) | -| mask | int | 字符加密掩码(十进制) | -| start | int | 密文Unicode初始码(十进制) | -| dict | String | 常见字 | - ### 辅助查询加密算法 #### MD5 辅助查询加密算法 diff --git a/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.en.md b/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.en.md index 58cad71e6f7..ac09a77ccf4 100644 --- a/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.en.md +++ b/docs/document/content/user-manual/common-config/builtin-algorithm/encrypt.en.md @@ -22,31 +22,6 @@ Attributes: | aes-key-value | String | AES KEY | | digest-algorithm-name | String | AES KEY DIGEST ALGORITHM (optional, default: SHA-1) | -#### RC4 Encrypt Algorithm - -Type: RC4 - -Attributes: - -| *Name* | *DataType* | *Description* | -|---------------|------------|---------------| -| rc4-key-value | String | RC4 KEY | - -### Like Encrypt Algorithm - -#### CharDigestLike Encrypt Algorithm - -Type:CHAR_DIGEST_LIKE - -Attributes: - -| *Name* | *DataType* | *Description* | -|--------|------------|-------------------------------------------------| -| delta | int | Character Unicode offset(decimal number) | -| mask | int | Character encryption mask(decimal number) | -| start | int | Ciphertext Unicode initial code(decimal number) | -| dict | String | Common words | - ### Assisted Encrypt Algorithm #### MD5 Assisted Encrypt Algorithm diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithm.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithm.java deleted file mode 100644 index 1bc3e2169e5..00000000000 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithm.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.encrypt.algorithm.standard; - -import lombok.EqualsAndHashCode; -import org.apache.commons.codec.binary.Base64; -import org.apache.shardingsphere.encrypt.api.context.EncryptContext; -import org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm; -import org.apache.shardingsphere.encrypt.exception.algorithm.EncryptAlgorithmInitializationException; -import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; - -import java.nio.charset.StandardCharsets; -import java.util.Properties; - -/** - * RC4 encrypt algorithm. - */ -@EqualsAndHashCode -public final class RC4EncryptAlgorithm implements StandardEncryptAlgorithm { - - private static final String RC4_KEY = "rc4-key-value"; - - private static final int KEY_MIN_LENGTH = 5; - - private static final int SBOX_LENGTH = 256; - - private byte[] key; - - @Override - public void init(final Properties props) { - key = getKey(props); - } - - private byte[] getKey(final Properties props) { - byte[] result = props.getProperty(RC4_KEY, "").getBytes(StandardCharsets.UTF_8); - ShardingSpherePreconditions.checkState(KEY_MIN_LENGTH <= result.length && SBOX_LENGTH > result.length, - () -> new EncryptAlgorithmInitializationException(getType(), "Key length has to be between " + KEY_MIN_LENGTH + " and " + (SBOX_LENGTH - 1))); - return result; - } - - @Override - public String encrypt(final Object plainValue, final EncryptContext encryptContext) { - return null == plainValue ? null : Base64.encodeBase64String(crypt(String.valueOf(plainValue).getBytes(StandardCharsets.UTF_8))); - } - - @Override - public Object decrypt(final Object cipherValue, final EncryptContext encryptContext) { - return null == cipherValue ? null : new String(crypt(Base64.decodeBase64(cipherValue.toString())), StandardCharsets.UTF_8); - } - - /* - * @see <a href="http://en.wikipedia.org/wiki/RC4#Pseudo-random_generation_algorithm_.28PRGA.29">Pseudo-random generation algorithm</a> - */ - private byte[] crypt(final byte[] message) { - int[] sBox = getSBox(); - byte[] result = new byte[message.length]; - int i = 0; - int j = 0; - for (int n = 0; n < message.length; n++) { - i = (i + 1) % SBOX_LENGTH; - j = (j + sBox[i]) % SBOX_LENGTH; - swap(i, j, sBox); - int rand = sBox[(sBox[i] + sBox[j]) % SBOX_LENGTH]; - result[n] = (byte) (rand ^ message[n]); - } - return result; - } - - /* - * @see <a href="http://en.wikipedia.org/wiki/RC4#Key-scheduling_algorithm_.28KSA.29">Wikipedia. Init sBox</a> - */ - private int[] getSBox() { - int[] result = new int[SBOX_LENGTH]; - int j = 0; - for (int i = 0; i < SBOX_LENGTH; i++) { - result[i] = i; - } - for (int i = 0; i < SBOX_LENGTH; i++) { - j = (j + result[i] + (key[i % key.length]) & 0xFF) % SBOX_LENGTH; - swap(i, j, result); - } - return result; - } - - private void swap(final int i, final int j, final int[] sBox) { - int temp = sBox[i]; - sBox[i] = sBox[j]; - sBox[j] = temp; - } - - @Override - public String getType() { - return "RC4"; - } -} diff --git a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm b/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm index 9f336b16809..8cb0319280d 100644 --- a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm +++ b/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm @@ -16,6 +16,4 @@ # org.apache.shardingsphere.encrypt.algorithm.standard.AESEncryptAlgorithm -org.apache.shardingsphere.encrypt.algorithm.standard.RC4EncryptAlgorithm -org.apache.shardingsphere.encrypt.algorithm.like.CharDigestLikeEncryptAlgorithm org.apache.shardingsphere.encrypt.algorithm.assisted.MD5AssistedEncryptAlgorithm diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithmTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithmTest.java deleted file mode 100644 index 63e3b8f4b09..00000000000 --- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithmTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.encrypt.algorithm.like; - -import org.apache.shardingsphere.encrypt.api.context.EncryptContext; -import org.apache.shardingsphere.encrypt.api.encrypt.like.LikeEncryptAlgorithm; -import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm; -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.test.util.PropertiesBuilder; -import org.apache.shardingsphere.test.util.PropertiesBuilder.Property; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.Mockito.mock; - -class CharDigestLikeEncryptAlgorithmTest { - - private LikeEncryptAlgorithm englishLikeEncryptAlgorithm; - - private LikeEncryptAlgorithm chineseLikeEncryptAlgorithm; - - private LikeEncryptAlgorithm koreanLikeEncryptAlgorithm; - - @BeforeEach - void setUp() { - englishLikeEncryptAlgorithm = (LikeEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "CHAR_DIGEST_LIKE"); - chineseLikeEncryptAlgorithm = (LikeEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "CHAR_DIGEST_LIKE"); - koreanLikeEncryptAlgorithm = (LikeEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, - "CHAR_DIGEST_LIKE", PropertiesBuilder.build(new Property("dict", "한국어시험"), new Property("start", "44032"))); - } - - @Test - void assertEncrypt() { - assertThat(englishLikeEncryptAlgorithm.encrypt("1234567890%abcdefghijklmnopqrstuvwxyz%ABCDEFGHIJKLMNOPQRSTUVWXYZ", - mock(EncryptContext.class)), is("0145458981%`adedehihilmlmpqpqtutuxyxy%@ADEDEHIHILMLMPQPQTUTUXYXY")); - assertThat(englishLikeEncryptAlgorithm.encrypt("_1234__5678__", mock(EncryptContext.class)), is("_0145__4589__")); - } - - @Test - void assertEncryptWithChineseChar() { - assertThat(chineseLikeEncryptAlgorithm.encrypt("中国", mock(EncryptContext.class)), is("婝估")); - } - - @Test - void assertEncryptWithKoreanChar() { - assertThat(koreanLikeEncryptAlgorithm.encrypt("한국", mock(EncryptContext.class)), is("각가")); - } - - @Test - void assertEncryptWithNullPlaintext() { - assertNull(englishLikeEncryptAlgorithm.encrypt(null, mock(EncryptContext.class))); - } -} diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithmTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithmTest.java deleted file mode 100644 index a87b3591f29..00000000000 --- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/algorithm/standard/RC4EncryptAlgorithmTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.encrypt.algorithm.standard; - -import org.apache.shardingsphere.encrypt.api.context.EncryptContext; -import org.apache.shardingsphere.encrypt.api.encrypt.standard.StandardEncryptAlgorithm; -import org.apache.shardingsphere.encrypt.exception.algorithm.EncryptAlgorithmInitializationException; -import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm; -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.test.util.PropertiesBuilder; -import org.apache.shardingsphere.test.util.PropertiesBuilder.Property; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.mock; - -class RC4EncryptAlgorithmTest { - - private StandardEncryptAlgorithm encryptAlgorithm; - - @BeforeEach - void setUp() { - encryptAlgorithm = (StandardEncryptAlgorithm) TypedSPILoader.getService(EncryptAlgorithm.class, "RC4", PropertiesBuilder.build(new Property("rc4-key-value", "test-sharding"))); - } - - @Test - void assertEncode() { - assertThat(encryptAlgorithm.encrypt("test", mock(EncryptContext.class)), is("4Tn7lQ==")); - } - - @Test - void assertEncryptNullValue() { - assertNull(encryptAlgorithm.encrypt(null, mock(EncryptContext.class))); - } - - @Test - void assertKeyIsTooLong() { - assertThrows(EncryptAlgorithmInitializationException.class, - () -> encryptAlgorithm.init(PropertiesBuilder.build(new Property("rc4-key-value", IntStream.range(0, 100).mapToObj(each -> "test").collect(Collectors.joining()))))); - } - - @Test - void assertKeyIsTooShort() { - assertThrows(EncryptAlgorithmInitializationException.class, - () -> encryptAlgorithm.init(PropertiesBuilder.build(new Property("rc4-key-value", "test")))); - } - - @Test - void assertDecode() { - assertThat(encryptAlgorithm.decrypt("4Tn7lQ==", mock(EncryptContext.class)).toString(), is("test")); - } - - @Test - void assertDecryptNullValue() { - assertNull(encryptAlgorithm.decrypt(null, mock(EncryptContext.class))); - } -} diff --git a/features/encrypt/core/src/test/resources/yaml/encrypt-rule.yaml b/features/encrypt/core/src/test/resources/yaml/encrypt-rule.yaml index 27939450a09..e8b9f209e6a 100644 --- a/features/encrypt/core/src/test/resources/yaml/encrypt-rule.yaml +++ b/features/encrypt/core/src/test/resources/yaml/encrypt-rule.yaml @@ -27,9 +27,6 @@ rules: assistedQuery: name: assisted_query_username encryptorName: assisted_encryptor - likeQuery: - name: like_query_username - encryptorName: like_encryptor encryptors: aes_encryptor: type: AES @@ -39,5 +36,3 @@ rules: type: AES props: aes-key-value: 123456abc - like_encryptor: - type: CHAR_DIGEST_LIKE diff --git a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4 b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4 index a8e8c47f9cb..6cb605cd6b5 100644 --- a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4 +++ b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/BaseRule.g4 @@ -34,25 +34,16 @@ algorithmTypeName buildInEncryptAlgorithmType : standardEncryptAlgorithm | assistedEncryptAlgorithm - | likeEncryptAlgorithm ; standardEncryptAlgorithm - : MD5 - | AES - | RC4 - | SM3 - | SM4 + : AES ; assistedEncryptAlgorithm : MD5 ; -likeEncryptAlgorithm - : CHAR_DIGEST_LIKE - ; - propertiesDefinition : PROPERTIES LP_ properties? RP_ ; diff --git a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4 b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4 index be4b1ca11cb..8137363e587 100644 --- a/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4 +++ b/features/encrypt/distsql/parser/src/main/antlr4/imports/encrypt/Keyword.g4 @@ -143,22 +143,6 @@ AES : A E S ; -RC4 - : R C [4] - ; - -SM3 - : S M [3] - ; - -SM4 - : S M [4] - ; - -CHAR_DIGEST_LIKE - : C H A R UL_ D I G E S T UL_ L I K E - ; - NOT : N O T ; diff --git a/proxy/backend/core/src/test/resources/conf/convert/config-encrypt.yaml b/proxy/backend/core/src/test/resources/conf/convert/config-encrypt.yaml index 6fa6138f3b0..ab59b37693a 100644 --- a/proxy/backend/core/src/test/resources/conf/convert/config-encrypt.yaml +++ b/proxy/backend/core/src/test/resources/conf/convert/config-encrypt.yaml @@ -49,7 +49,7 @@ rules: props: rc4-key-value: 123456abc like_encryptor: - type: CHAR_DIGEST_LIKE + type: CORE.QUERY_LIKE.FIXTURE tables: t_encrypt: columns: diff --git a/proxy/backend/core/src/test/resources/conf/import/config-encrypt.yaml b/proxy/backend/core/src/test/resources/conf/import/config-encrypt.yaml index aef5444ece5..167fea16568 100644 --- a/proxy/backend/core/src/test/resources/conf/import/config-encrypt.yaml +++ b/proxy/backend/core/src/test/resources/conf/import/config-encrypt.yaml @@ -44,10 +44,6 @@ rules: type: AES props: aes-key-value: 123456abc - rc4_encryptor: - type: RC4 - props: - rc4-key-value: 123456abc tables: t_encrypt: columns: @@ -58,4 +54,4 @@ rules: order_id: cipher: name: order_cipher - encryptorName: rc4_encryptor + encryptorName: aes_encryptor diff --git a/proxy/backend/core/src/test/resources/expected/convert-encrypt.yaml b/proxy/backend/core/src/test/resources/expected/convert-encrypt.yaml index 8882645ae93..54ea9b0474e 100644 --- a/proxy/backend/core/src/test/resources/expected/convert-encrypt.yaml +++ b/proxy/backend/core/src/test/resources/expected/convert-encrypt.yaml @@ -31,6 +31,6 @@ PROPERTIES('minPoolSize'='1', 'connectionTimeoutMilliseconds'='30000', 'maxLifet CREATE ENCRYPT RULE t_encrypt ( COLUMNS( -(NAME=user_id, CIPHER=user_cipher, ASSISTED_QUERY_COLUMN=user_assisted, LIKE_QUERY_COLUMN=user_like, ENCRYPT_ALGORITHM(TYPE(NAME='aes', PROPERTIES('aes-key-value'='123456abc'))), ASSISTED_QUERY_ALGORITHM(TYPE(NAME='rc4', PROPERTIES('rc4-key-value'='123456abc'))), LIKE_QUERY_ALGORITHM(TYPE(NAME='char_digest_like'))), +(NAME=user_id, CIPHER=user_cipher, ASSISTED_QUERY_COLUMN=user_assisted, LIKE_QUERY_COLUMN=user_like, ENCRYPT_ALGORITHM(TYPE(NAME='aes', PROPERTIES('aes-key-value'='123456abc'))), ASSISTED_QUERY_ALGORITHM(TYPE(NAME='rc4', PROPERTIES('rc4-key-value'='123456abc'))), LIKE_QUERY_ALGORITHM(TYPE(NAME='core.query_like.fixture'))), (NAME=order_id, CIPHER=order_cipher, ENCRYPT_ALGORITHM(TYPE(NAME='rc4', PROPERTIES('rc4-key-value'='123456abc')))) )); diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithm.java b/test/e2e/fixture/src/test/java/org/apache/shardingsphere/test/e2e/fixture/ITEncryptLikeAlgorithmFixture.java similarity index 95% rename from features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithm.java rename to test/e2e/fixture/src/test/java/org/apache/shardingsphere/test/e2e/fixture/ITEncryptLikeAlgorithmFixture.java index 4b64d855695..42acf4f43ee 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/like/CharDigestLikeEncryptAlgorithm.java +++ b/test/e2e/fixture/src/test/java/org/apache/shardingsphere/test/e2e/fixture/ITEncryptLikeAlgorithmFixture.java @@ -15,10 +15,9 @@ * limitations under the License. */ -package org.apache.shardingsphere.encrypt.algorithm.like; +package org.apache.shardingsphere.test.e2e.fixture; import com.google.common.base.Strings; -import lombok.EqualsAndHashCode; import lombok.SneakyThrows; import org.apache.shardingsphere.encrypt.api.context.EncryptContext; import org.apache.shardingsphere.encrypt.api.encrypt.like.LikeEncryptAlgorithm; @@ -33,11 +32,7 @@ import java.util.Scanner; import java.util.stream.Collectors; import java.util.stream.IntStream; -/** - * Char digest like encrypt algorithm. - */ -@EqualsAndHashCode -public final class CharDigestLikeEncryptAlgorithm implements LikeEncryptAlgorithm { +public final class ITEncryptLikeAlgorithmFixture implements LikeEncryptAlgorithm { private static final String DELTA_KEY = "delta"; @@ -158,6 +153,6 @@ public final class CharDigestLikeEncryptAlgorithm implements LikeEncryptAlgorith @Override public String getType() { - return "CHAR_DIGEST_LIKE"; + return "IT.ENCRYPT.LIKE.FIXTURE"; } } diff --git a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm b/test/e2e/fixture/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm similarity index 71% copy from features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm copy to test/e2e/fixture/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm index 9f336b16809..f6c7dada3ea 100644 --- a/features/encrypt/core/src/main/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm +++ b/test/e2e/fixture/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm @@ -15,7 +15,4 @@ # limitations under the License. # -org.apache.shardingsphere.encrypt.algorithm.standard.AESEncryptAlgorithm -org.apache.shardingsphere.encrypt.algorithm.standard.RC4EncryptAlgorithm -org.apache.shardingsphere.encrypt.algorithm.like.CharDigestLikeEncryptAlgorithm -org.apache.shardingsphere.encrypt.algorithm.assisted.MD5AssistedEncryptAlgorithm +org.apache.shardingsphere.test.e2e.fixture.ITEncryptLikeAlgorithmFixture diff --git a/features/encrypt/core/src/main/resources/algorithm/like/common_chinese_character.dict b/test/e2e/fixture/src/test/resources/algorithm/like/common_chinese_character.dict similarity index 100% rename from features/encrypt/core/src/main/resources/algorithm/like/common_chinese_character.dict rename to test/e2e/fixture/src/test/resources/algorithm/like/common_chinese_character.dict diff --git a/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml b/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml index b1b7460494b..d94f7c2cc56 100644 --- a/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml +++ b/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml @@ -29,8 +29,8 @@ <column name="like_query_type" /> <column name="like_query_props" /> </metadata> - <row values="t_user| user_name| user_name_cipher| | user_name_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE| mask=4093" /> + <row values="t_user| user_name| user_name_cipher| | user_name_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE| mask=4093" /> <row values="t_user| password| password_cipher| | | AES| aes-key-value=123456abc| | | | " /> <row values="t_user| email| email_cipher| | | AES| aes-key-value=123456abc| | | | " /> - <row values="t_user| telephone| user_telephone_cipher| | user_telephone_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE| mask=4093" /> + <row values="t_user| telephone| user_telephone_cipher| | user_telephone_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE| mask=4093" /> </dataset> diff --git a/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml b/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml index 488e8d0e859..1bbed24a732 100644 --- a/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml +++ b/test/e2e/sql/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml @@ -29,12 +29,12 @@ <column name="like_query_type" /> <column name="like_query_props" /> </metadata> - <row values="t_user| user_name| user_name_cipher| | user_name_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE| mask=4093" /> + <row values="t_user| user_name| user_name_cipher| | user_name_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE| mask=4093" /> <row values="t_user| password| password_cipher| | | AES| aes-key-value=123456abc| | | | " /> <row values="t_user| email| email_cipher| | | AES| aes-key-value=123456abc| | | | " /> - <row values="t_user| telephone| user_telephone_cipher| | user_telephone_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE| mask=4093" /> + <row values="t_user| telephone| user_telephone_cipher| | user_telephone_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE| mask=4093" /> <row values="t_user_details| number| number_cipher| | | AES| aes-key-value=123456abc| | | | " /> <row values="t_user_details| number_new| number_new_cipher| | | AES| aes-key-value=123456abc| | | | " /> - <row values="t_merchant| business_code| business_code_cipher| | business_code_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE | mask=4093 " /> - <row values="t_merchant| telephone| merchant_telephone_cipher| | merchant_telephone_like| AES| aes-key-value=123456abc| | | CHAR_DIGEST_LIKE | mask=4093 " /> + <row values="t_merchant| business_code| business_code_cipher| | business_code_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE | mask=4093 " /> + <row values="t_merchant| telephone| merchant_telephone_cipher| | merchant_telephone_like| AES| aes-key-value=123456abc| | | IT.ENCRYPT.LIKE.FIXTURE | mask=4093 " /> </dataset> diff --git a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/mysql/config-encrypt.yaml b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/mysql/config-encrypt.yaml index 1a6b944972f..52e62adb616 100644 --- a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/mysql/config-encrypt.yaml +++ b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/mysql/config-encrypt.yaml @@ -39,7 +39,7 @@ rules: props: aes-key-value: 123456abc like_encryptor: - type: CHAR_DIGEST_LIKE + type: IT.ENCRYPT.LIKE.FIXTURE props: mask: 4093 tables: diff --git a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/opengauss/config-encrypt.yaml b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/opengauss/config-encrypt.yaml index 89a633b9d4e..ed3a7d99c7c 100644 --- a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/opengauss/config-encrypt.yaml +++ b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/opengauss/config-encrypt.yaml @@ -39,7 +39,7 @@ rules: props: aes-key-value: 123456abc like_encryptor: - type: CHAR_DIGEST_LIKE + type: IT.ENCRYPT.LIKE.FIXTURE props: mask: 4093 tables: diff --git a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/postgresql/config-encrypt.yaml b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/postgresql/config-encrypt.yaml index 9cc2b3d5382..a5030de3a71 100644 --- a/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/postgresql/config-encrypt.yaml +++ b/test/e2e/sql/src/test/resources/env/scenario/encrypt/proxy/conf/postgresql/config-encrypt.yaml @@ -39,7 +39,7 @@ rules: props: aes-key-value: 123456abc like_encryptor: - type: CHAR_DIGEST_LIKE + type: IT.ENCRYPT.LIKE.FIXTURE props: mask: 4093 tables: diff --git a/test/e2e/sql/src/test/resources/env/scenario/encrypt/rules.yaml b/test/e2e/sql/src/test/resources/env/scenario/encrypt/rules.yaml index 69a2ac6a6d9..a4c0b5294e4 100644 --- a/test/e2e/sql/src/test/resources/env/scenario/encrypt/rules.yaml +++ b/test/e2e/sql/src/test/resources/env/scenario/encrypt/rules.yaml @@ -26,7 +26,7 @@ rules: props: aes-key-value: 123456abc like_encryptor: - type: CHAR_DIGEST_LIKE + type: IT.ENCRYPT.LIKE.FIXTURE props: mask: 4093 tables: