That depends.
I store my stuff in an external file, simply because I want to be able to edit everything with a text-editor or a special map editor. I also want to allow others to write their own map editors, if they wish.
An encryption is always addtional. First you need to decide how to store the data. Thus having said, I don't think an encryption is necessary. But that's just my opinion.
There are many ways to store your actual data in a file and it depends on the kinds of map you're intending to use.
If it's a static map with static objects a normal textfile with bytes or words is enough.
It looks kinda like this (you can actually see the map when you view it with a text-editor)
Code:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X X XXXXX X
X XXX X
X X X
X X
X ___ X
X ______ XXX___ __O X
X P XXXXXX XXXXXX XXX X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
You see the X's are walls, ___ is kind of a plattform, P is the player and O is maybe the exit.
If the objects are not so static, you may need to use several bytes or words per object.
X0X0X5X0X0X is again a wall and the number behind it indicates the damage (if you can destroy objects in the game for example). In the middle there's a block that's pretty damaged. One or two more shots/kicks/whatever and it may break.
Then you may have layers.
Like snow on a block or water.
You can do it like this.
X00X00X0SX0SX4SX00X00
Now you see there are normal walls (X00) and snow covered walls (X0S) and damaged snow covered walls (X4S).
The problem with this is, when you want to add a new layer later, you'll have to rewrite the loading and saving functions.
Or you can do it like this. A new block for each layer.
Code:
XXXXXXX
000SSS0
00000040
Or you can use a Database.
Or you can use XML.
It really depends on the type of game and the type of map.