Commit d633efa9 by Wasu

Initial APIM-Addon-Project with hexCryptoProject

0 parents
{
"java.configuration.updateBuildConfiguration": "interactive"
}
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.techberry.async.hexCryptoMediator</groupId>
<artifactId>hexCryptoMediator</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>hexCryptoMediator</name>
<parent>
<groupId>org.wso2</groupId>
<artifactId>wso2</artifactId>
<version>1</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
<version>2.1.7-wso2v7</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon.apimgt</groupId>
<artifactId>org.wso2.carbon.apimgt.gateway</artifactId>
<version>6.5.0</version>
</dependency>
</dependencies>
</project>
package com.techberry.crypto.hexCryptoMediator;
import com.techberry.crypto.hexCryptoMediator.utils.HexCryptoUtil;
import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
public class HexCryptoMediator extends AbstractMediator {
private String key;
private String data;
private String mode;
@Override
public boolean mediate(MessageContext synCtx) {
if("encrypt".equalsIgnoreCase(mode)){
data = HexCryptoUtil.encryptData(data, key);
synCtx.setProperty("data",data);
}else if("decrypt".equalsIgnoreCase(mode)){
data = HexCryptoUtil.decryptData(data, key);
synCtx.setProperty("data",data);
}else{
}
return true;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
package com.techberry.crypto.hexCryptoMediator.utils;
import org.apache.commons.codec.binary.StringUtils;
public class HexCryptoUtil {
public static String decryptData(String data, String key) {
try {
int nLen = data.length();
int nKeyLen = key.length();
byte[] bdata = new byte[nLen / 2];
int nCount = 0;
for (int i = 0; i < nLen; i += 2) {
byte byteData = toByte("" + data.charAt(i) + data.charAt(i + 1));
bdata[nCount] = (byte) (byteData ^ key.charAt(nCount % nKeyLen));
nCount++;
}
// return Encoding.UTF8.GetString(bdata);
return StringUtils.newStringUtf8(bdata);
} catch (Exception e) {
return null;
}
}
private static byte toByte(String data) {
return (byte) ((((int) data.charAt(0) - 0x41) << 4) | ((int) data.charAt(1) - 0x41));
}
public static String encryptData(String sdata, String key) {
StringBuilder sb = new StringBuilder();
// byte[] bdata = Encoding.UTF8.GetBytes(sdata);
byte[] bdata = StringUtils.getBytesUtf8(sdata);
int nLen = bdata.length;
int nKeyLen = key.length();
for (int i = 0; i < nLen; i++) {
sb.append(toHex(((char) (bdata[i] ^ key.charAt(i % nKeyLen)))));
}
return sb.toString();
}
private static String toHex(char data) {
StringBuilder sb = new StringBuilder();
int nCh = (int) (data);
sb.append((char) (((nCh >> 4) & 15) + 0x41));
sb.append((char) ((nCh & 15) + 0x41));
return sb.toString();
}
}
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!