• 0

help with DES and AES


Question

hi I have posted something like this before but I am still tackling the problem....

I am trying to encrypt bytes and then add a second encryption then remove the first without removing the second.... I have my reasons for this I need help with this not an alternative....

the encryption can be alternative so DES + DES or AES + DES or AES + AES or anything thing else but it has to be like this ... here is my code so far .... I have got the encryption layers on ... its just getting them off im struggling with (one page test code)....im getting (given final block is not correctly padded)


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

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

public class ObjectCrypter {

public static void main(String[] argv) {

try {

String str = "moo";

byte[] byted = str.getBytes();

Cipher desCipher;
Cipher enCipher;

KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
SecretKey myDesKey = keygenerator.generateKey();

desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
byte[] textEd = desCipher.doFinal(byted);

System.out.println("DES?" + new String(textEd));



byte[] byt = textEd;

KeyGenerator keygenerat = KeyGenerator.getInstance("AES");
SecretKey myD = keygenerat.generateKey();

enCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

enCipher.init(Cipher.ENCRYPT_MODE, myD);
byte[] tex = enCipher.doFinal(byt);

System.out.println("AES?" + new String(tex));

desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
byte[] textDecrypted = desCipher.doFinal(tex);

System.out.println("it work?" + new String(textDecrypted));





}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}catch(NoSuchPaddingException e){
e.printStackTrace();
}catch(InvalidKeyException e){
e.printStackTrace();
}catch(IllegalBlockSizeException e){
e.printStackTrace();
}catch(BadPaddingException e){
e.printStackTrace();
}
}

}
[/CODE]

if you can help it would be great :)

Link to comment
https://www.neowin.net/forum/topic/1120844-help-with-des-and-aes/
Share on other sites

Recommended Posts

  • 0

I'm not sure how this could work, by encrypting it with AES you can't then decrypt it with DES, as it's not in the format the DES algorithm is capable of decrypting.

It's like doing ROT13 then Base64 encoding it, then doing ROT13 again without decoding from Base64, it won't give the intended results.

  • 0

So it looks like you encrypted with DES followed by AES. Shouldn't you decrypt with AES followed by DES?

I'm not sure how this could work, by encrypting it with AES you can't then decrypt it with DES, as it's not in the format the DES algorithm is capable of decrypting.

It's like doing ROT13 then Base64 encoding it, then doing ROT13 again without decoding from Base64, it won't give the intended results.

even when I encrypt with DES both times i still get the same result ...the thing is im trying to set up a safe way to send information where neither party has the others keys so encryptions needs to be removed in the same order they were added .... so if i encrypt the string "moo" ... with a passkey such as "hello" then encrypt the new string with the passkey "goodbye" I then need to remove the encryption "hello" after which i then remove the passkey goodbye .... :p get it?

  • 0
even when I encrypt with DES both times i still get the same result ...the thing is im trying to set up a safe way to send information where neither party has the others keys so encryptions needs to be removed in the same order they were added .... so if i encrypt the string "moo" ... with a passkey such as "hello" then encrypt the new string with the passkey "goodbye" I then need to remove the encryption "hello" after which i then remove the passkey goodbye .... :p get it?

That's completely illogical and will never work. You always have to decrypt in the opposite order of encryption.

  • 0

That's completely illogical and will never work. You always have to decrypt in the opposite order of encryption.

well then maybe you can help me..... I need to create a p2p chat system with encryption.... BUT the encryption key obviously cant be in the source code or sent over the internet in plain text ..... any helps ?

  • 0

well then maybe you can help me..... I need to create a p2p chat system with encryption.... BUT the encryption key obviously cant be in the source code or sent over the internet in plain text ..... any helps ?

Use asymmetric encryption. A popular asymmetric encryption protocol is SSH. The JsCH library seems like a popular Java implementation of SSH.
  • 0

Dude what!

This and your other thread added together... Either you are NOT meant to be a programmer or you've currently got no clue how to be a programmer.

Write down your ideas and think if they're possible or not and try to plot how they would work.

Other thread: I want to make my program impossible for others to decode -> to run on a PC, it needs to be readable by a PC -> by being readable by a PC that also means people can 'read' it -> if I obscure the code will it help? And what downsides will doing that have, will it create bugs or slow down the running of my program and how much, and what will it cost to implement?

This thread: I want to make a secure chat program -> what encrytion will I use? -> What encryption types will I use? -> I do not want to use the same key to encrypt is so I will use asymmetrical encryption.

Etc. otherwise you will unfortunately keep making junk and be a pretty awful programmer.

EDIT: also reguarding SSH, it's a protocol not an encryption standard :p SSH can use various but you'd probably want to look up PGP, RSA etc.

  • 0

... that's why I said it's a protocol. Btw I don't think your ridiculing of the OP is a productive way of helping him.

I'm not ridiculing him, if you walk into your job as project manager of something with no plan, not only will your project never exist, you'll be fired.

Programming is no different.

If you just think 'yeh I`ll do this but no idea how or if its even possible' then you will never do that.

  • 0

Dude what!

This and your other thread added together... Either you are NOT meant to be a programmer or you've currently got no clue how to be a programmer.

Write down your ideas and think if they're possible or not and try to plot how they would work.

Other thread: I want to make my program impossible for others to decode -> to run on a PC, it needs to be readable by a PC -> by being readable by a PC that also means people can 'read' it -> if I obscure the code will it help? And what downsides will doing that have, will it create bugs or slow down the running of my program and how much, and what will it cost to implement?

This thread: I want to make a secure chat program -> what encrytion will I use? -> What encryption types will I use? -> I do not want to use the same key to encrypt is so I will use asymmetrical encryption.

Etc. otherwise you will unfortunately keep making junk and be a pretty awful programmer.

EDIT: also reguarding SSH, it's a protocol not an encryption standard :p SSH can use various but you'd probably want to look up PGP, RSA etc.

actually .... I get As in all my programming exams and assignments..... there are just some things I have yet to do .... I have moved on to network programming .... please do not underestimate me.... I dislike you **** OFF

I'm not ridiculing him, if you walk into your job as project manager of something with no plan, not only will your project never exist, you'll be fired.

Programming is no different.

If you just think 'yeh I`ll do this but no idea how or if its even possible' then you will never do that.

you are you are taking the ****... im asking questions to help me understand .... I find programming easy but guess what I have to learn it in specific ways I understand .... not everyone speaks english the same just like not everyone programs the same now go annoy someone else troll

Use asymmetric encryption. A popular asymmetric encryption protocol is SSH. The JsCH library seems like a popular Java implementation of SSH.

thank you for your tips /i will have a look I understand that SSH is a secure protocol used for things such as VPNs and i am feeling it is a good idea to try and use that protocol...

  • 0

See you're saying to use the SSH protocol... You wouldn't use the SSH protocol unless you're communicating with an SSH server or making an SSH client.

All I'm saying is take a step back from what you're doing and look at the overall picture.

I'm not trolling, if anyone's trolling it's you 'how do i hide my code'.

SMH, welcome to the real world.

  • 0

See you're saying to use the SSH protocol... You wouldn't use the SSH protocol unless you're communicating with an SSH server or making an SSH client.

All I'm saying is take a step back from what you're doing and look at the overall picture.

I'm not trolling, if anyone's trolling it's you 'how do i hide my code'.

SMH, welcome to the real world.

Why can't a chat client and server communicate over SSH? SSH is (among other things) a protocol for secure data communication. There are no set limitations on what that data has to be.

  • 0

As far as I'm aware SSH is a tunneling communications protocol from an SSH client to an SSH daemon (running on a *nix system) which uses public and private RSA and ESSID keys to encrypt and decrypt the data sent to and from it, so if you were to use ssh then you'd ssh to a ssh server and run a program on it... The hassle of doing all that I can't see being worth it when you can just setup PGP easily, send over the public key and just use PGP or RSA.

  • 0

While you could make a chat client run over SSH, it's not a good "fit". Something like TLS is a much better option (You aren't dealing with SSH semantics then, it's just something that encrypts and decrypts incoming and outgoing communication)

  • 0

well then maybe you can help me..... I need to create a p2p chat system with encryption.... BUT the encryption key obviously cant be in the source code or sent over the internet in plain text ..... any helps ?

You need to step away from the code, and properly think about how the overall design will work.

Are you producing a client for existing protocols?

I get that this is probably just a personal programming exercise, but are you creating client software that is based on one or more existing chat protocols and infrastructures, and just throws encryption on top? Or are you creating entirely your own thing? I'm going to assume the latter!

So, will there be a web service?

How will users discover each other? How will they know when each other is online? And what about authentication?

While it would be possible to completely avoid having a web service (and maybe that's what you actually meant by 'p2p'), it would be a pain to use:

  • To connect to each other, users would have to communicate their IP address and port number to each other through some other means, and then enter this information into their chat clients.
  • Some people have dynamic IP addresses, and additionally the port number may not be fixed, so recording this information in a 'friends list' would be useless and therefore knowing whether each other is online without separately speaking to each other would be impossible.
  • If a user's IP address is dynamic and changes part way through a chat, their new IP address is going to have to be provided to the other user all over again, and a portion of the chat may have been lost in the interruption.
  • NAT could complicate things even more.

A third-party dynamic DNS service could perhaps make some of this easier, but adds problems of its own, and there's a better option - a centralised web service.

A centralised web service will allow users to connect to one another in a simple and clean manner.

  • Users will create a unique alias on the web service and then enter it into their client. The client software can automatically talk to the web service to provide/update the IP address and port number to associate with it.
  • Periodic checks by the service, or "check ins" generated by the client, are done to keep track of the user's connection status.
  • Tying a password to the alias prevents identity theft / impersonation.
  • One user would still need to disclose a piece of information (their alias) to the other user in order to create the initial connection, but there's no getting around that. Thankfully this way is much better than above though, and with a connection established, the users can be recorded in each other's 'friends list' and they never have to supply it again. If you think your users would accept it, you could even offer an email search/lookup facility, with a friend request mechanism.

A couple of notes:

  • In storing a friend list, the unique ID (aka UID, normally a number) should be recorded (hidden), not the alias, to allow users to change their aliases without breaking friend list entries.
  • If one user decides to remove someone from their friend list, you may want to consider automatically removing them from the other person's too.

So how to go about encrypting chat then?

As already pointed out by others, asymmetric encryption is the best way of implementing this, and I hope and assume that you're already familiar with it. We need to think about some specifics though!

One thing that may influence how you implement encryption will be legislation (if we're pretending that you were developing a real product here). Your government may not actually allow you to produce an encrypted chat mechanism with no means what-so-ever of allowing them to snoop on it. Let's pretend that there would be no such restrictions though.

One simple way of implementing asymmetric encryption could be by using an encryption key belonging to the web service as a 'legitimate' middle man, and dynamically creating client certificates on the fly. A copy of the web service's public key could be embedded in the client application (preventing a third-party middle man attack in transmitting it). When connecting to the service, the client creates a new certificate, encrypts the public key with the web service public key, and sends it to the web service, which then sends back an encrypted confirmation. In transmitting a message to the other user, the client encrypts it and sends it to the web service in the same way. The web service decrypts it, re-encrypts it with the public key for the other user, and sends it on.

There are two huge problems here though:

  • The huge load placed on the web service. This could very easily be solved by only using the above mechanism to transfer the user's public keys securely to each other, then they can send encrypted communications between themselves, but does not solve the next problem below.
  • The web service is a huge weak spot. Administrators of the web service can snoop at any time they like. The government can demand to be provided access to be able to snoop. If someone should hack the web service, they can snoop.

This kind of problem exists in a lot of systems out there. Drop box for instance, there's nothing really stopping administrators accessing your data unless you pre-encrypt it, which is a pain. HTTPS is a complete joke, and so therefore is S/MIME which afaik is based on it. There are a couple of excellent solutions though that we could derive inspiration from:

  • One is spideroak, a competitor to dropbox (no, before you ask, I don't work for them). Spideroak encrypts all of your data, and keep a copy of the encryption key, but they never keep a copy of the password for the encryption key. If you loose your password, you loose your data. As long as they are true to their word, and the software really operates as they say it does, never sending your password to them or anyone else, your data is completely secure.
  • PGP based email encryption. This is asymmetric encryption. Each user generates a key pair. They send a copy of their public keys to each other, and verify them (to ensure no-one has intercepted them and performed a switch) through another form of communication. This is completely secure as long as correct verification is done, and they keep their private keys secure.

We could improve the security of our chat application by copying PGP. (I think there's actually an existing plugin for Pidgin that does this). The client allows the user to generate a key pair, and the public key could automatically be sent to anyone you connect to. You use another means such as the phone to verify them, and you're secure. Public keys could also be stored in friend lists, and signed by the user, in order to record the fact that they have verified and can trust that key, so you don't need to verify it every time, and so that if the developer of the client (you) tried to switch the key to snoop, they'd notice. Users would still need to trust that the client application isn't leaking unencrypted chat content or their private keys back to the developer (you) or government, but it wouldn't be too difficult for an expert to analyse the binary of your application and the web traffic it generates in order to determine if anything fishy is going on. (It would not be possible to analyse the web service described earlier is this way, an analyst would have to be granted special access to it, and you could easily hide things or change them at any time you liked).

The design outlined is not necessarily perfect however, because the user's key is stored locally on their computer. If they want to use a different computer, or loose their computer for any reason, that's a problem for most users. It would probably be better if user encryption keys (public and private) were stored on the web service. The public key could be stored as is, just like a public public-key server, and record signatures placed on keys, allowing groups of friends to more easily establish trust within their group with fewer external verification checks needed. The private keys would be encrypted with the user's password, and the password would never itself be stored by the web service, just like spideroak. When the user logs in to their chat client, a mechanism is gone through to that authenticates the user, crucially without their password being submitted to the web service, and hopefully without unnecessarily handing out a copy of the private key to anyone without the correct password. This sounds difficult if not impossible but spideroak apparently manages to do exactly this! Additionaly the transfer of the private key once the user is authenticated must be done securely, perhaps the copy of the already encrypted copy could be sent, and then decrypted with the password in the client...but then why wouldn't spideroak simply do that...I think I need to get some sleep at this point, and think this bit through some other time...

One potential problem with this improved mechanism though is that for security, users cannot log in to the website (pretending one existed for the product), if logging in to it was needed for some particular functionality, without compromising their security. Spideroak strongly advise against logging in to the website, instead doing everything within, or establishing an authenticated web session through, their application.

I'm probably going way beyond what you perhaps wanted with this, but it was interesting to think about :p

What about saved chats?

This can wait for another time, It's really late now and I should get some sleep...!

-----

edit: fixed a few minor typos and a broken link

  • Like 2
  • 0

You need to step away from the code, and properly think about how the overall design will work.

Are you producing a client for existing protocols?

I get that this is probably just a personal programming exercise, but are you creating client software that is based on one or more existing chat protocols and infrastructures, and just throws encryption on top? Or are you creating entirely your own thing? I'm going to assume the latter!

So, will there be a web service?

How will users discover each other? How will they know when each other is online? And what about authentication?

While it would be possible to completely avoid having a web service (and maybe that's what you actually meant by 'p2p'), it would be a pain to use:

  • To connect to each other, users would have to communicate their IP address and port number to each other through some other means, and then enter this information into their chat clients.
  • Some people have dynamic IP addresses, and additionally the port number may not be fixed, so recording this information in a 'friends list' would be useless and therefore knowing whether each other is online without separately speaking to each other would be impossible.
  • If a user's IP address is dynamic and changes part way through a chat, their new IP address is going to have to be provided to the other user all over again, and a portion of the chat may have been lost in the interruption.
  • NAT could complicate things even more.

A third-party dynamic DNS service could perhaps make some of this easier, but adds problems of its own, and there's a better option - a centralised web service.

A centralised web service will allow users to connect to one another in a simple and clean manner.

  • Users will create a unique alias on the web service and then enter it into their client. The client software can automatically talk to the web service to provide/update the IP address and port number to associate with it.
  • Periodic checks by the service, or "check ins" generated by the client, are done to keep track of the user's connection status.
  • Tying a password to the alias prevents identity theft / impersonation.
  • One user would still need to disclose a piece of information (their alias) to the other user in order to create the initial connection, but there's no getting around that. Thankfully this way is much better than above though, and with a connection established, the users can be recorded in each other's 'friends list' and they never have to supply it again. If you think your users would accept it, you could even offer an email search/lookup facility, with a friend request mechanism.

A couple of notes:

  • In storing a friend list, the unique ID (aka UID, normally a number) should be recorded (hidden), not the alias, to allow users to change their aliases without breaking friend list entries.
  • If one user decides to remove someone from their friend list, you may want to consider automatically removing them from the other person's too.

So how to go about encrypting chat then?

As already pointed out by others, asymmetric encryption is the best way of implementing this, and I hope and assume that you're already familiar with it. We need to think about some specifics though though!

One thing that may influence how you implement encryption will be legislation (if we're pretending that you were developing a real product here). Your government may not actually allow you to produce an encrypted chat mechanism with no means what-so-ever of allowing them to snoop on it. Let's pretend that there would be no such restrictions though.

One simple way of implementing asymmetric encryption could be by using an encryption key belonging to the web service as a 'legitimate' middle man, and dynamically creating client certificates on the fly. A copy of the web service's public key could be embedded in the client application (preventing a third-party middle man attack in transmitting it). When connecting to the service, the client creates a new certificate, encrypts the public key with the web service public key, and sends it to the web service, which then sends back an encrypted confirmation. In transmitting a message to the other user, the client encrypts it and sends it to the web service in the same way. The web service decrypts it, re-encrypts it with the public key for the other user, and sends it on.

There are two huge problems here though:

  • The huge load placed on the web service. This could very easily be solved by only using the above mechanism to transfer the user's public keys securely to each other, then they can send encrypted communications between themselves, but does not solve the next problem below.
  • The web service is a huge weak spot. Administrators of the web service can snoop at any time they like. The government can demand to be provided access to be able to snoop. If someone should hack the web service, they can snoop.

This kind of problem exists in a lot of systems out there. Drop box for instance, there's nothing really stopping administrators accessing your data unless you pre-encrypt it, which is a pain. HTTPS is a complete joke, and so therefore is S/MIME which afaik is based on it. There are a couple of excellent solutions though that we could derive inspiration from:

  • One is spideroak, a competitor to dropbox (no, before you ask, I don't work for them). Spideroak encrypts all of your data, and keep a copy of the encryption key, but they never keep a copy of the password for the encryption key. If you loose your password, you loose your data. As long as they are true to their word, and the software really operates as they say it does, never sending your password to them or anyone else, your data is completely secure.
  • PGP based email encryption. This is asymmetric encryption. Each user generates a key pair. They send a copy of their public keys to each other, and verify them (to ensure no-one has intercepted them and performed a switch) through another form of communication. This is completely secure as long as correct verification is done, and they keep their private keys secure.

We could improve the security of our chat application by copying PGP. (I think there's actually an existing plugin for Pidgin that does this). The client allows the user to generate a key pair, and the public key could automatically be sent to anyone you connect to. You use another means such as the phone to verify them, and your secure. Public keys could also be stored in friend lists, and signed by the user, in order to record the fact that they have verified and can trust that key, so you don;t need to verify it every time, and so that if the developer of the client (you) tried to switch the key to snoop, they'd notice. Users would still need to trust that the client application isn't leaking unencrypted chat content or their private keys back to the developer (you) or government, but it wouldn't be too difficult for an expert to analyse the binary of your application and the web traffic it generates in order to determine if anything fishy is going on. (It would not be possible to analyse the web service described earlier is this way, an analyst would have to be granted special access to it, and you could easily hide things or change them at any time you liked).

The design outlined is not necessarily perfect however, because the user's key is stored locally on their computer. If they want to use a different computer, or loose their computer for any reason, that's a problem for most users. It would probably be better if user encryption keys (public and private) were stored on the web service. The public key could be stored as is, just like a public public-key server, and record signatures placed on keys, allowing groups of friends to more easily establish trust within their group with fewer external verification checks needed. The private keys would be encrypted with the user's password, and the password would never itself be stored by the web service, just like spideroak. When the user logs in to their chat client, a mechanism is gone through to that authenticates the user, crucially without their password being submitted to the web service, and hopefully without unnecessarily handing out a copy of the private key to anyone without the correct password. This sounds difficult if not impossible but spideroak https://spideroak.co...do exactly this! Additionaly the transfer of the private key once the user is authenticated must be done securely, perhaps the copy of the already encrypted copy could be sent, and then decrypted with the password in the client...but then why wouldn't spideroak simply do that...I think I need to get some sleep at this point, and think this bet through some other time...

One potential problem with this improved mechanism though is that for security, users cannot log in to the website (pretending one existed for the product), if logging in to it was needed for some particular functionality, without compromising their security. Spideroak strongly advise against logging in to the website, instead doing everything within, or establishing an authenticated web session through, their application.

I'm probably going way beyond what you perhaps wanted with this, but it was interesting to think about :p

What about saved chats?

This can wait for another time, It's really late now and I should get some sleep...!

well I will answer the first two sub titles :p the 3rd one will require more reading but I have to get my washing out before i go to class xD ......

firstly thank you for taking the time to show interest it shows you are taking me seriously...

secondly This is my aim and how I am trying to get there...

this P2P connection will have a host so far im starting off easy, the host will be decided by the people using the chat (e.g. run host.class)

the host will be listening on the desired port (default probs 4444 or 5555 something like that) the client then connects to host ... yes target will need to be specified by client (I am trying to do this with as little database work as possible but I am not closed to it )

this program is not designed for use by a large populous its a program that will be off the radar for now and used for specific private communications....

I was thinking about using private and public key methods but im not sure how they work yet....

There will be another chat I will be making in the future which will use usernames and such both with encryption and without (one is a project I have to do other is just because I want to ) ....

like I said rest will have to wait!!! also no saved chats ever ! all will be burnt ...

  • 0

even when I encrypt with DES both times i still get the same result ...the thing is im trying to set up a safe way to send information where neither party has the others keys so encryptions needs to be removed in the same order they were added .... so if i encrypt the string "moo" ... with a passkey such as "hello" then encrypt the new string with the passkey "goodbye" I then need to remove the encryption "hello" after which i then remove the passkey goodbye .... :p get it?

What you're talking about is mathematically possible, however I don't think it can be secure. The only way (that I know of) to do this is is with very simple algorithms (hence the lack of security). Take, for example the XOR bitwise operation. With a simple XOR cipher, you can encrypt a text with a key K1, and then again with a key K2. To decrypt, you can use K1 and K2 in any order.

I would, however, suggest following the lead of existing open source software that fits with your goals. Given your current knowledge, it's basically impossible to invent a novel cryptographic approach.

If I have seen further it is by standing on the shoulders of giants. --Isaac Newton

  • 0

What you're talking about is mathematically possible, however I don't think it can be secure. The only way (that I know of) to do this is is with very simple algorithms (hence the lack of security). Take, for example the XOR bitwise operation. With a simple XOR cipher, you can encrypt a text with a key K1, and then again with a key K2. To decrypt, you can use K1 and K2 in any order.

I would, however, suggest following the lead of existing open source software that fits with your goals. Given your current knowledge, it's basically impossible to invent a novel cryptographic approach.

If I have seen further it is by standing on the shoulders of giants. --Isaac Newton

ye I know it is possible I went to a seminar about this kind of stuff ... though we talked about methods and ideas they never really shared how to do it xD which is annoying so I know its possible these people are contractors for the DoD ....I am going to try public and private keys to see where that gets me though I dont want to use it without knowing exactly how the mathmatical algorithms work it seems like an odd concept ... once I read the logic behind it i will be fine ....

"with great power comes great responsibility" -- ben parker

  • 0

:woot: best post in this entire forum since a long while.

I know right someone who shows interest and posts a length post !

also question for you!

I cannot understand why this is refusing to work


KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024); //it complains about this line, "miss placed constructs, delete token 1024?
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();

[/CODE]

  • 0

package enchat;
import java.security.*;
import java.security.spec.*;
import java.io.*;
import java.math.*;
public class RSAe {

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();
public static void main(String[] args) {


}

}
[/CODE]

  • 0

So it's not. That line of code has to be inside a method, this is just a rule of the Java language. At the class level you can only have method or field declarations, and field declarations can optionally have an initializer. That line of code is neither.

  • 0

So it's not. That line of code has to be inside a method, this is just a rule of the Java language. At the class level you can only have method or field declarations, and field declarations can optionally have an initializer. That line of code is neither.

oooooh derp ... I did something stupid didnt I, I facepalmed when I realised I am not thinking at all .... (its been a while since i last slept)

This topic is now closed to further replies.
  • Posts

    • (I know it's just an image and also not the point at all, but it really bugs me that the two halves of the necklace don't really fit together... 😅)
    • It is the same everywhere. Gitlab's boss recently had a lengthily blog post about the future of AI in the company and in general. The usual drum beating. When I saw it I checked their stock prices - close to 50% down.
    • Cloud Security Fundamentals eBook —was $131.95, now free to download by Steven Parker Claim your complimentary copy (worth $131.95) of "Cloud Security Fundamentals: Building the Foundations for Secure Cloud Platforms" for free, before the offer ends on July 1. Description In Cloud Security Fundamentals: Building the Foundations for Secure Cloud Platforms, cybersecurity leader and educator, Jason Edwards, delivers a comprehensive guide to safeguarding data, applications, and infrastructure in the cloud. The author offers a complete walkthrough of cloud security, moving from foundational concepts to advanced, forward-looking practices. The book is filled with practical examples, hands-on guidance, and lessons drawn from real-world cloud security incidents and breaches. It equips readers with the tools and knowledge they need to defend against threats in cloud environments and how to understand coming developments in cloud technology that will impact organizations in all industries. Inside the book: A thorough introduction to cloud-native and advanced security practices for contemporary firms A chapter on relevant cloud security certifications and professional growth advice Practical discussions of foundational concepts in cloud security, including IAM, Zero Trust, and DevSecOps Complete treatments of advanced cloud security themes, like leadership strategies, operational best practices, and techniques for dealing with common and emerging threats Perfect for cloud security professionals, IT managers, and DevOps professionals, Cloud Security Fundamentals will also benefit system administrators, compliance and risk officers, consultants, auditors, and technology students in a variety of fields who require a foundational understanding of cloud security concepts. How to download for free Please ensure you read the terms and conditions to claim this offer. Complete and verifiable information is required in order to receive this free offer. If you have previously made use of these offers, you will not need to re-register. Was $131.95, but is now FREE | Below link offer expires on July 1. Cloud Security Fundamentals: Building the Foundations for Secure Cloud Platforms The below offers are also available for free in exchange for your (work) email: The Vibe Coding Playbook: Building Your Tech Business with AI ($35 Value) FREE - Expires 6/23 The Persuasion Engine: How Any Business Can Use AI-Powered Neuromarketing to Understand and Win Customers ($28 Value) FREE - Expires 6/24 How to Do More with Less: Future-Proofing Yourself in an AI-driven Economy ($28 Value) FREE - Expires 6/30 Cloud Security Fundamentals: Building the Foundations for Secure Cloud Platforms ($131.95 Value) FREE - Expires 7/1 The Complete Free AI Learning: Master ChatGPT, Claude, Gemini & More ($21 Value) FREE How to Build an AI Design Workflow with Gamma ($21 Value) FREE The Ultimate Linux Newbie Guide – Featured Free content Python Notes for Professionals – Featured Free content Learn Linux in 5 Days – Featured Free content Quick Reference Guide for Cybersecurity – Featured Free content We post these because we earn commission on each lead so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. Other ways to support Neowin The above deal not doing it for you, but still want to help? Check out the links below. Check out our partner software in the Neowin Store Buy a T-shirt at Neowin's Threadsquad Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: An account at Neowin Deals is required to participate in any deals powered by our affiliate, StackCommerce. For a full description of StackCommerce's privacy guidelines, go here. Neowin benefits from shared revenue of each sale made through the branded deals site.
    • TerraMaster F4-425 Pro review: an octa-core Intel NAS that ships with AI (OpenClaw) by Steven Parker It has been a while since I reviewed a TerraMaster NAS, but the company reached out to me asking if I was willing to test the F4-425 Pro, which goes on sale today. It is an upgrade on the F4-425 Plus, which I reviewed back in October 2025 What you need to know is that it basically follows the design principles of the four-bay F4-425 series, with its all-metal exterior. Here are the most important specifications: TerraMaster F4-425 Pro CPU Intel Core N350 (8x E Cores/Threads, Max burst up to 3.9 GHz) Intel Core N305 (4x E Cores/Threads, Max burst up to 3.8 GHz) TDP: 7W / 9W (Base) Graphics Intel UHD Graphics 32 EUs (1.35 GHz) Intel UHD Graphics 24 EUs (1.25 GHz) Memory 1x slot 16 GB DDR5 4800MT/s non ECC SODIMM (Max 32 GB) 1x slot 8 GB DDR5 4800MT/s non ECC SODIMM (Max 32 GB) Disk Capacity 120 TB (30 TB x 4) Supported RAID Types TRAID, TRAID +, RAID0, RAID1, RAID5, RAID 6, RAID 10 Network 2x RJ-45 5 GbE Internal storage 3x M.2 2280 NVMe Slot (PCIe 3.0 x1) Bootloader 2Gbit 256 GB NAND Flash card (MX30LF2G28AD) USB port (internal) USB Ports 1x Type-C 3.2 Gen 2 (10Gbps) 3x Type-A 3.2 Gen 2 (10Gbps) HDMI 1x (HDMI) Hardware Transcoding Engine H.264, H.265, MPEG-4, VC-1 Maximum resolution: 4K (4096 x 2160); Maximum FPS: 60 Size (H/W/D) 219 x 181 x 150 mm Weight 2.9 kg System Fan 150 x181 x 219 mm Power 90W, 100V - 240V AC, 50/60 Hz, Single frequency Power consumption (HDDs) 45W (4x 4TB ST4000VN008 in read/write state) 14W (4x 4TB ST4000VN008 in hibernation) Noise Level: 20.9 dB(A) Using 4 SATA HDDs/SSDs in standby mode; Test environment noise: 17.3dB(A); Test distance: 1m Warranty 2 Years OS TOS 7.0.0706 (Beta) MSRP £639.99, $699.99, €739.99 / £739.99, $799.99, €839.99 As you can see above, there are two variants of the F4-425 Pro releasing today. The lesser variant has the slightly weaker N305 CPU and iGP, and 8 GB less RAM, although it also costs $100 less than the top variant we are testing today. In addition, these new F4-425 Pros are shipped with the as-yet-unreleased TOS 7 beta. So what is TOS 7 exactly? During the device initialization, you are warned not to use it in a production environment, which we'll get into later. My contact told me that TOS 7 exits beta today, June 23 with version 7.0.0746. The clear difference with the F4-425 Plus is that it contains the more powerful N350 Intel CPU released in the first quarter of 2025, with support for DisplayPort 1.4, HDMI 2.1, LPDDR5 (4800), DDR5 and DDR4, and a max TDP of just 7W. It also supports AV1 decoding, as well as H.264, VP8, VP9, H.265 (8 bit), and H.265 (10 bit). The different capabilities in the Alder Lake-N (and Twin Lake) series are listed below. Processor E-cores L3-cache Turbo clock GPU GPU-clock TDP Intel N355 8 6 MB 3.9 GHz 32 EUs 1.35 GHz 9 W Intel Core 3 N350 3.9 GHz 1.35 GHz 7 W Intel Core i3-N305 3.8 GHz 1.25 GHz 9 W Intel Core i3-N300 3.8 GHz 1.25 GHz Intel N250 4 3.8 GHz 1.25 GHz 6 W Intel Processor N200 3.7 GHz 0.75 GHz Intel N150 3.6 GHz 24 EUs 1 GHz Intel N97 1.2 GHz 12 W Intel Processor N100 3.4 GHz 0.75 GHz 6 W The CPU is part of the Alder Lake-N series that sits just below the top N355 offering, albeit with an impressive TDP (less than the N355 and N305) for the features it offers. It is designed for low- powered systems and entry-level laptops. As before, we are seeing another NAS with an acceptable, if not great, amount of RAM. It should be noted that the F4-425 Pro only has one SODIMM slot, so if you are planning to upgrade the already 16GB included in this NAS, it will have to be on one module of Single Rank DDR5. As a reminder, up until a couple of years ago, it was commonplace to only get 2 or 4GB max on a flagship Synology or QNAP home NAS. Ever since the likes of TerraMaster and more have entered the market with ample RAM sizes included in their NAS offerings, it has gone a long way in forcing the hands of the traditional makers to up their game a bit. Before we dive in, you can view the different SKUs released so far since the 2025 series launched for Home and SMB users, with the most important specifications listed along with the MSRP listed below: SKU CPU Cores Memory Link Price F2-425 Intel N5095 4 4 GB DDR4 2.5 GbE x1 $249.99 F4-425 Intel N5095 4 4 GB DDR4 2.5 GbE x1 $369.99 F2-425 Plus Intel Core N150 4 8 GB DDR5 5 GbE x 2 $399.99 F4-425 Plus Intel Core N150 4 16 GB DDR5 5 GbE x 2 $569.99 F4-425 Pro Intel Core N305 8 8 GB DDR5 5 GbE x 2 $699.99 F4-425 Pro Intel Core N350 8 16 GB DDR5 5 GbE x 2 $799.99 The F2 in the product name means two 3.5-inch HDD bays, where F4 is four 2.5-inch bays. First impressions Like with the F8 SSD Plus packaging, the F4-425 Pro is using the upgraded box materials, which certainly look better than a plain cream colored box with TERRAMASTER stamped on the sides. The box gives off a premium feel and certainly adds a positive vibe to first impressions. In the box F4-425 Pro TNAS device Power adapter LAN cable (CAT 6) Quick guide [full online guide] Limited warranty notice Screws (for HDD bays) Stickers 2x rubber feet (spares) Design As has become kind of common with TerraMaster, certainly in the last three years, the 2025 F2- and F4-series have received a makeover that really adds to the premium feel of the NAS. Gone are the plastic shells, now replaced with an aluminum outer shell, with the front and back retaining the textured black plastic we saw on the 2024 models. Some key differences from the 2024 series include placing the power button back on the front, along with the addition of a Type A USB port. It's not much bigger or heavier either; in fact, it weighs 500 grams less than the F4-424 Pro. It's slightly shorter in height and depth (length), but only by a few millimeters. The front and back do retain a similar style to the 2024 series. On the front, you just have your four bays along with LED indicators for the HDDs and power. The welcomed change is having a USB port on the front for quick access, should you need to back up a USB drive, for example. Around the back, from top to bottom, you have a reset pin hole, an HDMI port, two 5 GbE Ethernet ports, two USB 3.2 Gen 2 (10 Gbps) Type A ports with a Type-C port below them, and a connector for the barrel port power source. Again, there's no Kensington Security Slot present, which is a bit of a shame considering it's a data storage device. Left side Right side On the left and right of the F4-425 Plus, it is completely smooth aluminum with a TERRAMASTER logo printed on both sides. On the bottom, there are some holes to assist ventilation. Unlike with the F4-425 Plus, the rubber feet did come unstuck during the teardown, which was also an issue on the 2023 series. It seems like other customers have lodged complaints about them, as TerraMaster now includes two spare rubber feet in the box, in case any of the preinstalled ones are lost; however, this seems more like a papering over the cracks solution rather than actually fixing the issue with better quality rubber stand-offs. There are also four screws that must be removed in order to access the internals. Teardown Upon removing the four screws, you can slide the device out of its shell to reveal the three NVMe M.2 slots (PCIe 3.0 X1) and single SODIMM slot connector, which is populated with a single 16GB DDR5 4800MT/s module. I added a couple of MP44Q M.2 PCIe 4.0 SSDs (2 x 4TB) that can be availed on Amazon for $492.99 that TEAMGROUP supplied us with, along with a 250GB 970 Evo Plus that my colleague Chris White sent me by accident and let me keep a few years ago. As I have said in previous reviews, TerraMaster support staff actually encourage installing whatever you want on their devices, and happily, the USB port for the bootloader is now easily accessible should you want to use it for your own flavor of NAS OS, such as TrueNAS, Unraid, or maybe Xpenology. Yes, because TerraMaster has now switched to a 256 GB NAND Flash card (3rd photo above) for the TOS bootloader. This is also replaceable, but you can also simply add a USB bootloader, access the BIOS, and tell the F4-425 Pro to boot from that instead of the Flash card. Unlike earlier iterations of TerraMaster NAS, you don't have to tear this down any further than the four screws on the outer shell in order to be able to access and manage the memory, NVMe slots, and USB bootloader. However, if you need to access the NAND Flash card or CMOS battery, then eight more screws (four on each side) need to be removed in order to take off the rear panel with the 120mm fan, and then the motherboard can be lifted off and removed from the SATA connector PCB. There's also no risk of threading the screw holes, because the four that hold the shell in place are metal on metal, while the screws that hold the rear panel on do screw into plastic. Either way, like last time when I reviewed the F4-425 plus, I was just happier to see larger screws being used. Overall, it follows some great improvements in build quality from the 2024 series and earlier. Setup BIOS The F4-425 Pro includes an Aptio BIOS from American Megatrends [1, 2], and you can setup pretty much everything here including the boot order, which is locked to the UEFI OS, however above that choice you can enable or disable booting to the USB bootloader so this would still allow you to switch to a USB stick with an alternative bootloader and boot from it, or disable it to instead always start from the first disk with an OS installed on it. Initial Setup Setup is roughly the same as the F4-425 Plus, along with the new TOS 7 setup dialogs, so there will be no surprises here. Upon connecting to the LAN and booting up, the F4-425 Pro can be reached by navigating to http://tnas.local. If that doesn't work, you can use the local address assigned via DHCP, which you can find using the TNAS PC desktop application, which is essentially a TerraMaster NAS finder. The setup process is pretty straightforward, through a wizard, and in full below: TOS 7 Initialization As you can see, TOS 7 received a new coat of paint, and the initialization requires fewer interactions. Happily, TOS no longer decides to throw all disks into the same Storage Pool; 2.5-inch HDDs are allocated into Storage Pool 1. This is because two of the HDDs are allocated to hold system files. Previously (with TOS 5 and 6), if you pre-installed HDDs and SSDs, they were all placed into Storage Pool 1, even if you did not select the SSDs for inclusion during the onboarding. TOS 7 Setup On first boot, there is a tutorial and some steps to take to harden the TNAS (or not), which includes an immediate update from TOS 7.0.0616 to 7.0.0706, of which the changelog screenshot is also included in the above gallery. It must be noted that the Security Advisor still contains (in my opinion) a pretty major bug in that if you enable SPC and then do the required rebooting, the Security Advisor still says that SPC is disabled. TerraMaster provided the following statement about it: It is disappointing that TOS 7 has been in beta since December, and this OOBE issue is still there. Shutdown option has moved Instead of a Taskbar option to manage the NAS, all of these options have been moved to a "Start panel", initially I didn't see it and my contact had to show me how to power off the F4-425 Pro. To logout, reboot or power off you can find those controls at the top right of the Panel. It is also possible to power off through the TNAS mobile app beta. Storage setup Above, you can see the steps I took to create the Storage Pools and Volumes. I made a second Storage Pool using TRAID on two 4TB MP44Q SSDs (which, in this instance, is similar to RAID 5), and finally, I added the 250GB 970 Evo Plus drive as Hyper Cache on Storage Pool 1 in Balanced mode. Registering If you decide not to lock down the F4-425 Pro in Security Isolation Mode (blocking all external connections), then you could set up a TNAS device ID through the Remote Access setting in the Control Panel (which must be unique). This works in combination with an online TerraMaster account. TOS 7 TNAS Online Creating a TerraMaster account and linking the device online activates the warranty when you provide proof of purchase and the serial number, but it also gives you access through the TNAS mobile app, which allows you to complete certain operationsб including powering off and restarting the NAS remotely. A TNAS mobile update is required to gain access through TOS 7, and this is provided on the TerraMaster website, as it is not yet on Google Play. The app is evolving all the time and has made leaps and bounds since I first started reviewing TerraMaster devices almost three years ago. It is not quite there yet if you are comparing the likes of Synology, which, sadly, a lot of users online do all the time. OpenClaw setup One of the main selling points of the new F4-425 Pro is the inclusion of OpenClaw, with TerraMaster claiming that it is "powered by the world's first AI-native TOS 7 OS, supporting local-first smart workflows and independent data control." However, I immediately ran into problems trying to enable OpenClaw. After waiting 20 minutes at the "Enabling" message of the OpenClaw app following installation, I decided to do some searching online and discovered that it couldn't complete the installation process due to SPC being enabled, which is something TOS 7 immediately recommends to be enabled on first boot. SPC for NAS (TOS 7) is basically the same principle as UAC in Windows; it blocks executables from being launched by non-Super Users. After reaching out to my contact about these issues, I received the following response: Anyway, this only became clear when I closed the OpenClaw app screen and clicked on the OpenClaw icon in the taskbar; that is when I saw the message about disabling SPC. I think, due to the fact that this is a requirement, this should be a prompt during the installation process, not when closing the App Market and then trying to launch OpenClaw. There's also no 'Getting started' guide for people like me who have never used OpenClaw. I tried to add an LLM and discovered the tutorial led nowhere. That's when I started looking around the official TerraMaster forums, and I found a guide that helpfully explains that you won't get anywhere with OpenClaw unless you have a paid plan, which is disappointing because I imagined there would be an option to use a local LLM as I do in SubtitleEdit with Whisper-XXL. In addition, with the marketing imagery on the official site, it says that the OpenClaw feature is "all processed 100% locally for absolute privacy." which led me to believe that I could install a local LLM, not one that required paid tokens. In any case, TerraMaster does not provide guidance for this new feature, which was also a selling point of the F4-425 Pro! My contact also provided clarification about the above points I raised with TerraMaster Since it is not in the scope of the review to add paid services, I'll leave that to the people who are more qualified with OpenClaw. F4-425 Pro Surveillance App TOS also comes with a Surveillance app, which is not installed by default; it can be found in the App Market recommended section. In addition, after installing, it doesn't drop a shortcut on the Desktop or top taskbar, but you can "Send to Desktop" from the App Market listing for the app for a quick way to open it. Adding my Reolink POE doorbell camera was painless. TerraMaster doesn't appear to have a repository of preconfigured cameras; instead, the camera must be added using ONVIF or RTSP. No mobile Surveillance app TerraMaster still doesn't have a dedicated Surveillance app, although from searching online, Surveillance can be used and managed through the TNAS mobile app. I tried this with the updated TNAS mobile app beta in combination with TOS 7 and got a message that Surveillance was "Only accessible through web browser," so I reckon this must be limited to the stable versions of TOS 6 and the mobile app. More quirks In addition, whenever I minimized the Live View window in the browser Surveillance app, the feed appeared to switch to the Low-bandwidth stream, and there was no way to get the High-quality stream back. To get the High-quality stream back, I had to close Live View and then reopen it. Benchmarking A pretty cool feature of the TOS 7 is that it allows you to install directly to the NVMe M.2 SSD. In order to do that, you would have to leave out any HDDs during initialization, and even then, the system partitions are always written to two HDDs when they are eventually added. With three NVMe slots, this also gives an interesting scenario where you could build a TRAID storage Pool for installing all your apps and Docker on, and keep the third for SSD cache on the HDD pool. Limitless options! SATA PCIe 3.0 X1 A CrystalDiskMark test on a mapped network drive from within a Windows 11 25H2 PC (image above) connected over a 5 GbE hub was well within acceptable ranges. Although the read result on SATA was a little less than with the F4-425 Plus, for some reason, while writes were generally better. SATA PCIe 3.0 X1 I also ran the NAS Performance tester, which tests the link speed performance. As you can see, it pretty much maxes out the 5GbE connection. Of course, you can also opt to bond the two 5 GbE connections for a bit more umph, but I didn't do that. TOS 7, which, as of testing, is still in Beta, comes with an App Center that has a bunch of handy programs you can install right off the bat, such as Emby, Plex, Docker, as well as in-house Backup and Surveillance solutions. As you can imagine, any media streaming services you would want to host off the F4-425 Pro will work great, thanks to the Intel Core N350 CPU and its 16 GB of DDR5 memory. Accessing from mobile is only possible if Security Isolation Mode is disabled, which can put your NAS at risk from external sources, so there was no way to access it from the TNAS Mobile app. It's also quiet. I had this sat next to my computer on my work desk for the past week, and I did wonder if the noise I was accustomed to with NAS devices would annoy me, but all I could hear was a soft whirring of the rear fan (which was a little annoying) when the disks were not actively copying or reading data. Conclusion So what have I learned? Unfortunately, this release raises a few important questions and concerns that I feel haven't been adequately addressed. What I didn't like Our variant shipped with TOS 7 beta, and it's advised not to use it in a production environment. I feel that's a bit limiting on an $800 device. The mobile app is also still in beta and does not support some of the first-party apps, like Surveillance, and it still has quite a few bugs. I am a bit confused about the OpenClaw marketing along with the F4-425 Pro. I feel like that if it's going to be a main selling point, then offer official guidance on how to get started with it. TerraMaster recommends enabling SPC, but then markets the NAS for use with OpenClaw, which requires disabling SPC to be able to use it, opening up genuine security concerns for the NAS; and that's before you get into the security concerns of OpenClaw itself. Of course, the above issues won't be a problem if you decide to install something else on it, or even go back to the stable TOS 6. I wish TerraMaster had just given TOS 7 as opt-in rather than shipping with it. TOS 7 has been available as a preview since December 2025 (so well before my last TerraMaster review), and according to a thread on Reddit where a user shared a screenshot from the TerraMaster Facebook page, it is scheduled to launch today, June 23, but there's nothing about that in the TerraMaster news blog. My contact confirmed over email that TOS 7 exits beta today. The rubber feet also deserve a mention as they continue to be a problem, with them coming unstuck the moment you shift the F4-425 Pro anywhere on your desk. What I liked What it comes down to, though, aside from what I already mentioned, you are still getting a quality, affordable device here, so recommending it will depend on the individual's use case. If you're just looking for a relatively small NAS device to manage virtual machines on, backup your files, and take care of your home theater streaming, then it is a great device that will certainly futureproof you for some time. It provides good performance, takes up little space, and is, on the whole, very quiet. Four bays afford proper redundancy using TRAID or RAID 5, and you can even expand on storage capacity by adding the 2-bay D5, or 4-bay D8 Hybrid DAS over a USB 3.2 (10Gbps) link. Considering the 2024 releases were more about power, with the likes of an Intel Core i5-1235U high-end laptop CPU under the hood, I asked my contact last time if we could expect more of the same in higher-end models and was told: It makes a lot of sense to use Intel's N350 chip inside a NAS; it is more than capable of doing what the F4-425 Pro is intended for, media streaming and backup. The only downside is still the clear lack of community and even staff support on the official forums. In the past, I have had topics go unanswered for days, or there would be generic-type "we've noted this and passed it onto our developer team" type responses. Along with the other things I mentioned, it all ends up costing it a couple of points. If you are comfortable with the command line, Docker, and setting up TrueNAS or Unraid, you'll be fine. You can do great things with this hardware. In TOS, the apps are a bit lacking, and things don't always work as expected.\ AI NAS?! What has become clear to me this year is that we are going to start seeing all kinds of "AI NAS" come to market, and while that might be good for us consumers, be diligent and research these claims. Although the F4-425 Pro technically comes with AI, it is really using a cloud service that is externally sourced off-device through the third party OpenClaw app. My colleague did review a newcomer to the NAS space earlier this year, and it includes a local AI assistant inside the Zettlab D4 NAS, and they do not even use AI in the product name, check out Chris' review here. Where to buy and a discount coupon However, it does not change the fact that this is truly a great entry-level home media-class NAS that you can buy right now. TerraMaster is having a 20% off launch discount, plus you can also still apply our unique 10% off coupon on checkout, which only works on the official website. So here is a breakdown of the pricing that is only valid on the official TerraMaster website. TerraMaster F4-425 Pro (N350) + 20% discount + 10% coupon = $575.99 TerraMaster F4-425 Pro (N305) + 20% discount + 10% coupon = $503.99 TerraMaster F4-425 Pro (N350) + 20% discount + 10% coupon = £525.59 TerraMaster F4-425 Pro (N305) + 20% discount + 10% coupon = £460.79 Use NEOWIN coupon code during checkout for 10% discount Over on Amazon US and UK, the F4-425 Pro also gets a 20% launch discount, but here, the above 10% coupon cannot be applied. TerraMaster F4-425 Pro (N350) for $639.99 at Amazon US (was $799.99) TerraMaster F4-425 Pro (N305) for $559.99 at Amazon US (was $699.99) TerraMaster F4-425 Pro (N350) for £583.99 at Amazon UK (was £729.99) TerraMaster F4-425 Pro (N305) for £511.99 at Amazon UK (was £639.99) As an Amazon Associate, when you purchase through links on our site, we earn from qualifying purchases.
  • Recent Achievements

    • Rookie
      DaviKar went up a rank
      Rookie
    • Dedicated
      HidekoYamamoto94 earned a badge
      Dedicated
    • One Month Later
      timbobit earned a badge
      One Month Later
    • One Month Later
      nates earned a badge
      One Month Later
    • Week One Done
      Almohandis earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      461
    2. 2
      +Edouard
      161
    3. 3
      PsYcHoKiLLa
      112
    4. 4
      Michael Scrip
      85
    5. 5
      Steven P.
      70
  • Tell a friend

    Love Neowin? Tell a friend!