PDA

View Full Version : سوال: فعال سازی با استفاده از ایمیل



behnamjafarzadeh
شنبه 06 اسفند 1390, 11:03 صبح
سلام دوستان چطور می تونم در adf به گونه ای عمل کنم که کاربر با استفاده از ایمیل یک لینک فعال سازی که شامل دو پارامتر هست رو دریافت کنه و سپس من بتونم اون دو پارامتر رو استخراج کنم و وارد یک task flow بشم که با توجه به اون دو پارامتر باقی عملیات رجیستریشن رو انجام بدم
مشکل اصلی من نحوه دریافت او دو پارامتر ارسالی به لینک ایمیل و استخراج او ن به نحوی است که بتونم در یک task flow ازش استفاده کنم
خواهش می کنم راهنامایی کنید

hosein.zare
دوشنبه 08 اسفند 1390, 22:57 عصر
به نظر من میتونی اون دو تا پارامتر را با یک کلید واحد رمز نگاری کنی بعد توی لینکت بگنجونی بعد لینک که صدا زده شد با همون کلید واحد رشته را رمز گشایی کنی . این کلاس را برات نوشتم . امیدوارم کمکت کنه:



import java.security.GeneralSecurityException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class EncryptDecrypt {

private static byte[] secretKey;
static {
KeyGenerator kgen;
try {
kgen = KeyGenerator.getInstance("AES");
} catch (NoSuchAlgorithmException e) {
throw new InternalError("THE ALGORITM AES NOT FOUND !!!!!");
}
kgen.init(128);
SecretKey skey = kgen.generateKey();
secretKey = skey.getEncoded();

}

public static void main(String[] args) throws Exception {
EncryptDecrypt s = new EncryptDecrypt();
String encrypt = s.encryptWithSecretKey("hossein.zarea@yahoo.com");
String decrypt = s.decryptWithSecretKey(encrypt);
System.out.println(decrypt);
}

public String encryptWithSecretKey(String plainText) {
try {
byte[] dataToSend = plainText.getBytes();
Cipher c = getAlgorithm();
SecretKeySpec k = new SecretKeySpec(secretKey, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
byte[] encryptedData = c.doFinal(dataToSend);
String str = new String(encryptedData);
return str;
} catch (GeneralSecurityException e) {
e.printStackTrace();
return null;
}

}

private Cipher getAlgorithm() {
try {
return Cipher.getInstance("AES");
} catch (GeneralSecurityException e) {
return null;
}
}

public String decryptWithSecretKey(String encryptedStr) {
byte[] encryptedData = encryptedStr.getBytes();
Cipher c = getAlgorithm();
SecretKeySpec k = new SecretKeySpec(secretKey, "AES");
try {
c.init(Cipher.DECRYPT_MODE, k);
byte[] data = c.doFinal(encryptedData);
return new String(data);
} catch (GeneralSecurityException e) {
e.printStackTrace();
return null;
}

}

}

hosein.zare
جمعه 12 اسفند 1390, 00:53 صبح
در نهایت برای خواندن‍‍ پارامترها از URL در صفحه هم میتونی از El Expression استفاده کنی
/faces/confim.jspx?email=hossein.zarea@yahoo.com

پارامتر ایمیل
#{param['email']}
یا
#{param.email}