ورود

View Full Version : مخفی کردن String در پروگارد



ali-star
پنج شنبه 20 شهریور 1393, 15:02 عصر
سلام دوستان
راهی نیست که بشه از طریق پروگارد String هارو مخفی یا مبهم سازی کرد؟

ali-star
پنج شنبه 20 شهریور 1393, 18:53 عصر
up...............

raha_jon
پنج شنبه 20 شهریور 1393, 20:12 عصر
یکی جواب بده منم لازم دارم:لبخند:

ali-star
جمعه 21 شهریور 1393, 08:33 صبح
up...............

MSHService
جمعه 21 شهریور 1393, 08:40 صبح
با درود و ادب

شما چرا تمامه String هاتون رو به صورت کد شده نمیزارید؟

یه تابع ساده DES رشته هاتون رو کد میکنه از اون ور هم توی برنامه تون دیکدشون کنید!!

raha_jon
جمعه 21 شهریور 1393, 09:00 صبح
میشه ی مثال بزنید؟؟؟

raha_jon
جمعه 21 شهریور 1393, 09:05 صبح
مثلا با زدن باتون با توست استرینگ را نمایش بده

raha_jon
جمعه 21 شهریور 1393, 09:15 صبح
من اینو پیدا کردم اما نمی تونم تجزیه کنم
لطفا راهنمایی

package com.javacodegeeks.snippets.core;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;

import com.sun.mail.util.BASE64DecoderStream;
import com.sun.mail.util.BASE64EncoderStream;

public class EncryptDecryptStringWithDES {

private static Cipher ecipher;
private static Cipher dcipher;

private static SecretKey key;

public static void main(String[] args) {

try {

// generate secret key using DES algorithm
key = KeyGenerator.getInstance("DES").generateKey();

ecipher = Cipher.getInstance("DES");
dcipher = Cipher.getInstance("DES");

// initialize the ciphers with the given key

ecipher.init(Cipher.ENCRYPT_MODE, key);

dcipher.init(Cipher.DECRYPT_MODE, key);

String encrypted = encrypt("This is a classified message!");

String decrypted = decrypt(encrypted);

System.out.println("Decrypted: " + decrypted);

}
catch (NoSuchAlgorithmException e) {
System.out.println("No Such Algorithm:" + e.getMessage());
return;
}
catch (NoSuchPaddingException e) {
System.out.println("No Such Padding:" + e.getMessage());
return;
}
catch (InvalidKeyException e) {
System.out.println("Invalid Key:" + e.getMessage());
return;
}

}

public static String encrypt(String str) {

try {

// encode the string into a sequence of bytes using the named charset

// storing the result into a new byte array.

byte[] utf8 = str.getBytes("UTF8");

byte[] enc = ecipher.doFinal(utf8);

// encode to base64

enc = BASE64EncoderStream.encode(enc);

return new String(enc);

}

catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static String decrypt(String str) {

try {

// decode with base64 to get bytes

byte[] dec = BASE64DecoderStream.decode(str.getBytes());

byte[] utf8 = dcipher.doFinal(dec);

// create new string based on the specified charset

return new String(utf8, "UTF8");

}

catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

MSHService
جمعه 21 شهریور 1393, 09:21 صبح
کلاسه زیر کلاس DES هست.

شما یه برنامه مینویسی که تمامه رشته هات رو با این DES کد کنی.

بعد توی برنامت هنگام خوندن این رشته ها دیکدشون میکنی.


public class DES {
// initial permuation table
private static int[] IP = { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36,
28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32,
24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19,
11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 };
// inverse initial permutation
private static int[] invIP = { 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47,
15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13,
53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51,
19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17,
57, 25 };
// Permutation P (in f(Feistel) function)
private static int[] P = { 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5,
18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4,
25

};
// initial key permutation 64 => 56 biti
private static int[] PC1 = { 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34,
26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63,
55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53,
45, 37, 29, 21, 13, 5, 28, 20, 12, 4 };
// key permutation at round i 56 => 48
private static int[] PC2 = { 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55,
30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29,
32 };
// key shift for each round
private static int[] keyShift = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2,
2, 1 };
// expansion permutation from function f
private static int[] expandTbl = { 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8,
9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32,
1 };
// substitution boxes
private static int[][][] sboxes = {
{ { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 },
{ 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8 },
{ 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0 },
{ 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 }
},
{ { 15, 1, 8, 14, 6, 11, 3, 2, 9, 7, 2, 13, 12, 0, 5, 10 },
{ 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5 },
{ 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15 },
{ 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 }
},
{ { 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 },
{ 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1 },
{ 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7 },
{ 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 }
},
{ { 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15 },
{ 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9 },
{ 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4 },
{ 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 }
},
{ { 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9 },
{ 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6 },
{ 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14 },
{ 11, 8, 12, 7, 1, 14, 2, 12, 6, 15, 0, 9, 10, 4, 5, 3 }
},
{ { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 },
{ 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 },
{ 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
{ 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }

},
{ { 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 },
{ 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 },
{ 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 },
{ 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 }

},
{ { 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7 },
{ 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2 },
{ 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8 },
{ 2, 1, 14, 7, 4, 10, 18, 13, 15, 12, 9, 0, 3, 5, 6, 11 }

} };

// holds subkeys(3 because we'll implement triple DES also
private static byte[][] K;
private static byte[][] K1;
private static byte[][] K2;



private static void setBit(byte[] data, int pos, int val) {
int posByte = pos / 8;
int posBit = pos % 8;
byte tmpB = data[posByte];
tmpB = (byte) (((0xFF7F >> posBit) & tmpB) & 0x00FF);
byte newByte = (byte) ((val << (8 - (posBit + 1))) | tmpB);
data[posByte] = newByte;
}

private static int extractBit(byte[] data, int pos) {
int posByte = pos / 8;
int posBit = pos % 8;
byte tmpB = data[posByte];
int bit = tmpB >> (8 - (posBit + 1)) & 0x0001;
return bit;
}

private static byte[] rotLeft(byte[] input, int len, int pas) {
int nrBytes = (len - 1) / 8 + 1;
byte[] out = new byte[nrBytes];
for (int i = 0; i < len; i++) {
int val = extractBit(input, (i + pas) % len);
setBit(out, i, val);
}
return out;
}

private static byte[] extractBits(byte[] input, int pos, int n) {
int numOfBytes = (n - 1) / 8 + 1;
byte[] out = new byte[numOfBytes];
for (int i = 0; i < n; i++) {
int val = extractBit(input, pos + i);
setBit(out, i, val);
}
return out;

}

private static byte[] permutFunc(byte[] input, int[] table) {
int nrBytes = (table.length - 1) / 8 + 1;
byte[] out = new byte[nrBytes];
for (int i = 0; i < table.length; i++) {
int val = extractBit(input, table[i] - 1);
setBit(out, i, val);
}
return out;

}

private static byte[] xor_func(byte[] a, byte[] b) {
byte[] out = new byte[a.length];
for (int i = 0; i < a.length; i++) {
out[i] = (byte) (a[i] ^ b[i]);
}
return out;

}

private static byte[] encrypt64Bloc(byte[] bloc,byte[][] subkeys, boolean isDecrypt) {
byte[] tmp = new byte[bloc.length];
byte[] R = new byte[bloc.length / 2];
byte[] L = new byte[bloc.length / 2];

tmp = permutFunc(bloc, IP);

L = extractBits(tmp, 0, IP.length/2);
R = extractBits(tmp, IP.length/2, IP.length/2);

for (int i = 0; i < 16; i++) {
byte[] tmpR = R;
if(isDecrypt)
R = f_func(R, subkeys[15-i]);
else
R = f_func(R,subkeys[i]);
R = xor_func(L, R);
L = tmpR;
}

tmp = concatBits(R, IP.length/2, L, IP.length/2);

tmp = permutFunc(tmp, invIP);
return tmp;
}

private static byte[] f_func(byte[] R, byte[] K) {
byte[] tmp;
tmp = permutFunc(R, expandTbl);
tmp = xor_func(tmp, K);
tmp = s_func(tmp);
tmp = permutFunc(tmp, P);
return tmp;
}

private static byte[] s_func(byte[] in) {
in = separateBytes(in, 6);
byte[] out = new byte[in.length / 2];
int halfByte = 0;
for (int b = 0; b < in.length; b++) {
byte valByte = in[b];
int r = 2 * (valByte >> 7 & 0x0001) + (valByte >> 2 & 0x0001);
int c = valByte >> 3 & 0x000F;
int val = sboxes[b][r][c];
if (b % 2 == 0)
halfByte = val;
else
out[b / 2] = (byte) (16 * halfByte + val);
}
return out;
}

private static byte[] separateBytes(byte[] in, int len) {
int numOfBytes = (8 * in.length - 1) / len + 1;
byte[] out = new byte[numOfBytes];
for (int i = 0; i < numOfBytes; i++) {
for (int j = 0; j < len; j++) {
int val = extractBit(in, len * i + j);
setBit(out, 8 * i + j, val);
}
}
return out;
}

private static byte[] concatBits(byte[] a, int aLen, byte[] b, int bLen) {
int numOfBytes = (aLen + bLen - 1) / 8 + 1;
byte[] out = new byte[numOfBytes];
int j = 0;
for (int i = 0; i < aLen; i++) {
int val = extractBit(a, i);
setBit(out, j, val);
j++;
}
for (int i = 0; i < bLen; i++) {
int val = extractBit(b, i);
setBit(out, j, val);
j++;
}
return out;
}


private static byte[] deletePadding(byte[] input) {
int count = 0;

int i = input.length - 1;
while (input[i] == 0) {
count++;
i--;
}

byte[] tmp = new byte[input.length - count - 1];
System.arraycopy(input, 0, tmp, 0, tmp.length);
return tmp;
}



private static byte[][] generateSubKeys(byte[] key) {
byte[][] tmp = new byte[16][];
byte[] tmpK = permutFunc(key, PC1);

byte[] C = extractBits(tmpK, 0, PC1.length/2);
byte[] D = extractBits(tmpK, PC1.length/2, PC1.length/2);

for (int i = 0; i < 16; i++) {

C = rotLeft(C, 28, keyShift[i]);
D = rotLeft(D, 28, keyShift[i]);

byte[] cd = concatBits(C, 28, D, 28);

tmp[i] = permutFunc(cd, PC2);
}

return tmp;
}

public static byte[] encrypt(byte[] data, byte[] key) {
int lenght=0;
byte[] padding = new byte[1];
int i;
lenght = 8 - data.length % 8;
padding = new byte[lenght];
padding[0] = (byte) 0x80;

for (i = 1; i < lenght; i++)
padding[i] = 0;

byte[] tmp = new byte[data.length + lenght];
byte[] bloc = new byte[8];

K = generateSubKeys(key);

int count = 0;

for (i = 0; i < data.length + lenght; i++) {
if (i > 0 && i % 8 == 0) {
bloc = encrypt64Bloc(bloc,K, false);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
if (i < data.length)
bloc[i % 8] = data[i];
else{
bloc[i % 8] = padding[count % 8];
count++;
}
}
if(bloc.length == 8){
bloc = encrypt64Bloc(bloc,K, false);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
return tmp;
}

public static byte[] TripleDES_Encrypt(byte[] data,byte[][] keys)
{
int lenght=0;
byte[] padding = new byte[1];
int i;

lenght = 8 - data.length % 8;
padding = new byte[lenght];
padding[0] = (byte) 0x80;

for (i = 1; i < lenght; i++)
padding[i] = 0;


byte[] tmp = new byte[data.length + lenght];
byte[] bloc = new byte[8];


K = generateSubKeys(keys[0]);
K1 = generateSubKeys(keys[1]);
K2 = generateSubKeys(keys[2]);

int count = 0;

for (i = 0; i < data.length + lenght; i++) {
if (i > 0 && i % 8 == 0) {
bloc = encrypt64Bloc(bloc,K, false);
bloc = encrypt64Bloc(bloc,K1, true);
bloc = encrypt64Bloc(bloc,K2, false);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
if (i < data.length)
bloc[i % 8] = data[i];
else {
bloc[i % 8] = padding[count % 8];
count++;
}
}
if(bloc.length == 8){
bloc = encrypt64Bloc(bloc,K, false);
bloc = encrypt64Bloc(bloc,K1, true);
bloc = encrypt64Bloc(bloc,K2, false);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
return tmp;
}


public static byte[] TripleDES_Decrypt(byte[] data,byte[][] keys)
{
int i;
byte[] tmp = new byte[data.length];
byte[] bloc = new byte[8];

K = generateSubKeys(keys[0]);
K1 = generateSubKeys(keys[1]);
K2 = generateSubKeys(keys[2]);

for (i = 0; i < data.length; i++) {
if (i > 0 && i % 8 == 0) {
bloc = encrypt64Bloc(bloc,K2, true);
bloc = encrypt64Bloc(bloc,K1, false);
bloc = encrypt64Bloc(bloc,K, true);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
if (i < data.length)
bloc[i % 8] = data[i];
}
bloc = encrypt64Bloc(bloc,K2, true);
bloc = encrypt64Bloc(bloc,K1, false);
bloc = encrypt64Bloc(bloc,K, true);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);


tmp = deletePadding(tmp);

return tmp;
}


public static byte[] decrypt(byte[] data, byte[] key) {
int i;
byte[] tmp = new byte[data.length];
byte[] bloc = new byte[8];

K = generateSubKeys(key);

for (i = 0; i < data.length; i++) {
if (i > 0 && i % 8 == 0) {
bloc = encrypt64Bloc(bloc,K, true);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
if (i < data.length)
bloc[i % 8] = data[i];
}
bloc = encrypt64Bloc(bloc,K, true);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);


tmp = deletePadding(tmp);

return tmp;
}
}



استفاده :


String textClar = "M@hdi Sharifi";
//DES
String k = "M@hdiSharifi";
System.out.println("Text Normal : "+textClar);//��]k�����A��[B@499a12ee
byte[] enc = DES.encrypt(textClar.getBytes(), k.getBytes());
System.out.println("Text Encrypted DES: "+new String(enc)+enc.toString());//M@hdi Sharifi

raha_jon
جمعه 21 شهریور 1393, 09:27 صبح
یعنی اون مثالی که من پیدا کردم ربطی به این نداشت؟

در ضمن من یک کلاس باز کردن با نام DESو اطلاعات بالا را توش ریختم
تا داخل مین اکتیویتی ازش استفاده کنم درسته؟

raha_jon
جمعه 21 شهریور 1393, 09:29 صبح
و از کجا بدونم که این کارو درست انجام داده ام؟؟

یا به قولی از صحت درست کار مطلع بشم؟

MSHService
جمعه 21 شهریور 1393, 09:36 صبح
درست انجام دادی عزیزم

تست کن.
بگیر کلید رو توی برنامت هر مقدار میخوای مقدار دهی کن k="کلید"
این کلاس رو توی یه برنامه جاوا بزار و توی مین رشتت رو کد کن.
این رشته کد شدت رو توی برنامه فراخونی کن به این صورت String(enc)+enc.toString()

موفق باشی

MSHService
جمعه 21 شهریور 1393, 09:41 صبح
اینم سورس برنامه (http://www.4shared.com/zip/pKnTT-cGba/DES_Cryption.html) توی NetBeans



موفق باشی

raha_jon
جمعه 21 شهریور 1393, 09:48 صبح
بازم تشکر
میشه با این کلید درون پرداخت بازارو هم کد کرد؟
یا برای اون از روش دیگه استفاده کنم؟

raha_jon
جمعه 21 شهریور 1393, 09:59 صبح
حالا ببینید درست انجام داده ام



public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String textClar = "M@hdiSharifi";
//DES
String k = "M@hdiSharifi";
System.out.println("Text Normal :"+textClar);//��]k�����A��[B@499a12ee
final byte[] enc = DES.encrypt(textClar.getBytes(), k.getBytes());
System.out.println("Text Encrypted DES:"+new String(enc)+enc.toString());//M@hdi Sharifi






Button b =(Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

Toast.makeText(getBaseContext(), enc.toString(), Toast.LENGTH_LONG).show();

}
});

MSHService
جمعه 21 شهریور 1393, 10:17 صبح
آره دوست عزیز.

این روشی که من خدمتتون عرض کردم کلا برای همون کد کردن اطلاعات مهم برنامه حین اجراست.
پیروز باشید.

raha_jon
جمعه 21 شهریور 1393, 10:19 صبح
معذرت واقعا
اما در توست اینو نمایش میده B@499a12ee و متغییر هم هست با هر بار بازو بست کردن و نمی تونم به جای M@hdiSharifi چیز دیگه استفاده کنم

چطوری کد بازارو رو این پیداه کنم؟ح

MSHService
جمعه 21 شهریور 1393, 11:15 صبح
این مین برنامت

package com.example.cryption_test1;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
EditText editText_1 ;
EditText editText_2 ;
byte[] enc;
byte[] dec;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_1=(Button) findViewById(R.id.btn1);
Button btn_2=(Button) findViewById(R.id.btn2);
editText_1 =(EditText) findViewById(R.id.editText1);
editText_2 =(EditText) findViewById(R.id.editText2);


String textClar = "Salam Mahdi";

final String k = "M@hdiSharifi";


btn_1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
String textClar = editText_1.getText().toString();
enc = DES.encrypt(textClar.getBytes(), k.getBytes());
}
});

btn_2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
dec = DES.decrypt(enc, k.getBytes());
editText_2.setText(new String(dec).toString());
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}



اینم Layoutت
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.cryption_test1.MainActivity" >


<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enc"
/>
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dec"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

</LinearLayout>



موفق باشی

raha_jon
جمعه 21 شهریور 1393, 11:36 صبح
دکمه ی تشکر عاجزه
تشکرررر

اما من گیج شدم از کاربرد این
اما تو جواب نده حالا چون واقعا زحمت کشیدی بازم تشکر:تشویق:

ali-star
جمعه 21 شهریور 1393, 11:37 صبح
من میخوام استرینگ ها کاملا مخفی باشن توی این مثال ها هنگام دیکمپایل استرینگ هارو میشه دید...

ali-star
جمعه 21 شهریور 1393, 11:50 صبح
من میخوام استرینگ ها کاملا مخفی باشن توی این مثال ها هنگام دیکمپایل استرینگ هارو میشه دید...

slr560
جمعه 21 شهریور 1393, 12:21 عصر
ببینید اگه میخواین استرینگ ها در چهارچوب کلید/مقدار دخیره بشن بگید تا من یه کتابخونه عالی بهت معرفی کنم
و اینکه شما چه بخواین چه نخواین باید یه استرینگ معلوم رو encrypt کنید دیگه درسته؟؟ حالا این استرینگ یا باید همون لحظه از کاربر گرفته بشه و کد بشه یا باید از سرور گرفته بشه و کد بشه یا اینکه خود استرینگ تو تو سورس بزارید و کد کنید
غیر از این ۳روش نیست دیگه

raha_jon
جمعه 21 شهریور 1393, 13:58 عصر
تشکر درسته
بلاخره به نظرتون چه کنیم؟
من زیاد بلد نیستم اما می خواستم جوری باشه وقتی برنامه را دیکامپایل کردن استرینگ دیده نشه
همین

slr560
جمعه 21 شهریور 1393, 16:41 عصر
تشکر درسته
بلاخره به نظرتون چه کنیم؟
من زیاد بلد نیستم اما می خواستم جوری باشه وقتی برنامه را دیکامپایل کردن استرینگ دیده نشه
همین
خب استرینگ چی هست این که خیلی مهمه؟
میتونی برای اولین بار استرینگ رو از سرور بگیری و کد کنی داخل shared prefrences
بعدش دیگه استرینگ رو از shared prefrences که رمز شده بخونی و دیکد کنی و استفادش کنی

raha_jon
جمعه 21 شهریور 1393, 17:18 عصر
هیچی نیست بابا
کد درون پرداخته:لبخند: